Задать вопрос
  • Как получить имена контактов из списка CallLog.Calls?

    402d
    @402d
    Сорри, просто вопрос касался, недавних изменений в политике, вдруг и смысла нет совсем писать прогу.
    Я две недели назад интегрировал CRM с готовой программой МоиЗвонки.
    А с первого апреля она стала не доступной в плее.

    Еще беда сперва сделал кастомный вариант приложения для хрома (расширил функционал от штатного для моизвонки) и только потом прочел, что публикация закрыта с 2016 года (сейчас только под ХромеОС).
    Зря только 5 баксов отдал.
  • Старый телефон как аналог ардуино или малинки?

    402d
    @402d
    Александр Вертинский, если вашу задачу рассматривать не с точки конечного результата, а как интересное
    применение к изучению материала для профобразования, то очень здраво получиться.

    Учишь материал, пытаешься его применить на практике. Нужно только решить в какую сторону
    двигаетесь. К сожалению рынок программистов ориентированных на низкоуровневое программирование узок.
  • Старый телефон как аналог ардуино или малинки?

    402d
    @402d
    Тут еще такой момент, что если квалификации достаточно для решения сопутствующих проблем,
    то можно рассчитывать на работу с зарплатой свыше 2000 долларов.
    И эта псевдо халява обойдется в минус квартиру, которую мог бы заработать за это время.
  • Старый телефон как аналог ардуино или малинки?

    402d
    @402d
    Из штатных интерфейсов смартфона только доступ к нему через вайфай
    по сети юзабелен. USB-OTG есть не у всех и там где есть часто проблема
    с одновременной подзарядкой и работой в этом режиме. Комбинированные
    шнурки подходят не всем (точнее я бы сказал, что это исключения).
  • Старый телефон как аналог ардуино или малинки?

    402d
    @402d
    То есть если есть большой проект с большим количеством пациентов
    вся соль слишком разное железо.
    Но это не будет малинкой. Микроконтролеры популярны
    а) широкий набор перефирии
    б) куча готовых библиотек
    в) приличная ИДЕ для разработки и заливки прошивки
    г) сообщество единомышлеников.

    А с телефонами больше 40 тысяч моделей и полное отсутствие выше перечисленного.

    Александр Вертинский, Попробуйте к живому телефону прикрутить
    https://smartelements.ru/collection/displei-i-indi...
  • Старый телефон как аналог ардуино или малинки?

    402d
    @402d
    fullstackly
    Дано . Сферический андроид телефон без тача и экрана.
    Требуется запустить по adb приложение и доступ к снятию скриншотов.

    Для этого предварительно
    1. Свап сверху .
    2. Клик в правый верхний угол
    3. домотать до конца настроек
    4. Клик на о телефоне
    5. свап до пункта версия прошивки
    6. 7 кликов на этот текст

    это только включение режима разработчика

    А еще разрешить установку из не известных источников.
    Разрешить удаленную отладку.
    Сказать, что вот этот конкретный комп может это делать.

    теперь возьмите свой телефон и попробуйте сделать хотя бы с заклеенным экраном.
    считаем, что тач у вас живой.
  • Как создать ассоциацию для файла своему приложению?

    402d
    @402d
    4ainik, зато вывести картинку на экран легко, не нужно учитывать весь зоопарк способов откуда она пришла
    при Action_SEND
    Uri uri = extras.getParcelable(Intent.EXTRA_STREAM);
    Для Action_VIEW
    Uri uri = intent.getData()
    и связываем ее с компонентом вывода
    imgView.setImageURI(uri);
  • Как создать ассоциацию для файла своему приложению?

    402d
    @402d
    И именем файла не все так просто.
    // метод возвращает полный реальный путь до файла, включая имя и расширение
        public static String getFilePath(Uri uri) {
            Context context = RawPrinterApp.getAppContext();
            try {
                String selection = null;
                String[] selectionArgs = null;
                if (Build.VERSION.SDK_INT >= 19 && DocumentsContract.isDocumentUri(context, uri)) {
                    if (isExternalStorageDocument(uri)) {
                        final String docId = DocumentsContract.getDocumentId(uri);
                        final String[] split = docId.split(":");
                        return Environment.getExternalStorageDirectory() + "/" + split[1];
                    } else if (isDownloadsDocument(uri)) {
                        final String id = DocumentsContract.getDocumentId(uri);
                        uri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
                    } else if (isMediaDocument(uri)) {
                        final String docId = DocumentsContract.getDocumentId(uri);
                        final String[] split = docId.split(":");
                        final String type = split[0];
                        switch (type) {
                            case "image":
                                uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                                break;
                            case "video":
                                uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                                break;
                            case "audio":
                                uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                                break;
                        }
                        selection = "_id=?";
                        selectionArgs = new String[]{split[1]};
                    }
                }
                if ("content".equalsIgnoreCase(uri.getScheme())) {
                    String[] projection = {MediaStore.Images.Media.DATA};
                    try (Cursor cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null)) {
                        int column_index = Objects.requireNonNull(cursor).getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                        if (cursor.moveToFirst()) {
                            return cursor.getString(column_index);
                        }
                    } catch (NullPointerException e) {
                        RawPrinterApp.showToast("error : " + e.getMessage());
                        e.printStackTrace();
                    } catch (Exception e) {
                        RawPrinterApp.showToast("error : " + e.getMessage());
                        Log.d("RAWBT", "Ignore Exception");
                        e.printStackTrace();
                    }
                } else if ("file".equalsIgnoreCase(uri.getScheme())) {
                    return uri.getPath();
                }
            }catch (Exception e){
                RawPrinterApp.showToast("error : "+e.getMessage());
                e.printStackTrace();
            }
            return "";
        }
  • Как создать ассоциацию для файла своему приложению?

    402d
    @402d
    гвоздь 5 сантиметров
    data android:mimeType="text/plain"
    гвоздь 10 сантиметров
    data android:mimeType="image/*"
  • Как создать ассоциацию для файла своему приложению?

    402d
    @402d
    Intent - это базовый механизм. Откройте startandroid.ru и почитайте уроки.
    Нет смысла объяснять частный случай его применения для открытия графического файла.
    Вам все равно придется полностью разобраться с этим понятием, если хотите писать приложения
    состоящие из более чем одной активити.
    Например
    Вот здесь я объявил, что текстовые файлы можно открыть с помощью моего приложения
    https://github.com/402d/TextToPrint/blob/master/ap...

    а чтобы не загромождать код onCreate вынес разбор полученного интента в функцию
    https://github.com/402d/TextToPrint/blob/master/ap...

    Так как нужно перерисовывать при смене шрифта - схалявил и вызываю разбор ее из setFont в случае,
    если не смог прочитать из-за отсутвия пермишина, опять читаю, когда его дали.

    Ваш случай отличается контент-тайпом и что нужно делать с файлом.
  • Как зайти по ssh на android за NAT?

    402d
    @402d
    делать из роутера свой vpn сервер. нужен белый, желательно статический ip. Пробывать vpn клиенты под андроид.
    Выбирать тот который подружится с роутером.
  • Схема монетизации бесплатного приложения через донат разрешена или нет?

    402d
    @402d Автор вопроса
    Это был сарказм. Практика показывает, что бесплатное приложение без рекламы практически не получает
    трафика из обзоров (похожие).
    Ближайший аналог бесплатно и без рекламы это "плати если хочешь" (донат).
    а при пожертвованиях в 4-5 баксов в месяц через обзор получаю 500-600 просмотров.
  • Сегодня перестали поддерживать сертификаты SHA-1?

    402d
    @402d
    тег андроид в вашем вопросе не причем.
    в ответе сервера у Вас
    server: nginx/1.14.0
    x-bitrix-composite: Cache (200)
    Так, что SSL сертификат скорее всего прописан в конфиге nginx
    Теперь проверяйте может ли быть виноват кеш битрикса ?
    Куда у Вас прописался свежий сертификат .
  • Как добавить свое anroid приложение в меню "поделиться..."?

    402d
    @402d
    У активити в манифесте дописать, что она принимает интент вью в классе броусабле. Остальное по вкусу. Схема маски урлов. Гуглиться легко.
  • Это ошибка (см. скрин of small class) разработчиков open cart или тут все в порядке?

    402d
    @402d
    небрежность.
    Есть автоматические средства проверки стиля и таких упущений.
    Возможно код писался давно и его никто не рефракторил.

    В phpShtorm или Eclipse такая строка была бы показана с выделением.
    Также в современных ИДЕ есть возможность автоматического
    контроля до коммитов. Также есть варианты утилит, которые можно повесить на precommit хук gita
  • Есть ли простое приложение/сервис для показа PUSH на андроиде?

    402d
    @402d
    https://habr.com/ru/post/321924/

    если немного уведомлений, и только админам, все вырождается в простейшую
    страницу - покажи тукен (javascript) в текстареа. Ключ копируется и передается
    программисту.

    На сайте отправка функция из нескольких строк
    $url = 'https://fcm.googleapis.com/fcm/send';
            $fields = array (
                'to' => $idустройствасостарницысjs,
                'notification' => array (
                    "body" => $mess,
                    "title" => $title,
                    "icon" => "",
                    "badge" => "",
                    "click_action"=>"",
                ),
            );
            $fields = json_encode ( $fields );
            $headers = array (
                'Authorization: key=' . "ключфаребасе",
                'Content-Type: application/json'
            );
    
            $ch = curl_init ();
            curl_setopt ( $ch, CURLOPT_URL, $url );
            curl_setopt ( $ch, CURLOPT_POST, true );
            curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
            curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
            curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );
    
            $result = curl_exec ( $ch );
  • Есть ли простое приложение/сервис для показа PUSH на андроиде?

    402d
    @402d
    тем что сафари уже стоит ?
    Нужно самому вместо приложения получить токен устройства ?
    Сделать самому шаблон вывода пуша ?

    остальное имхо будет одинаково.
    Не гарантированная доставка в интервале от 1-2 секунд до получаса.
    Хотя приложение может реализовывать еще один вариант получения нотифи. Типа по крону дергать
    свое рест апи.
  • Как открывать страницу по ссылке из push уведомления?

    402d
    @402d
    https://datatracker.ietf.org/wg/webpush/documents/
    основа описана в 8030 .
    почитайте 5 страницу . overview

    Для простого сайта своя реализация всей инфраструктуры ужасный оверхед.
    И дело в ПОЛУЧАТЕЛЕ.
    Вам придется уговаривать пользователя поставить вашего клиента на свое
    устройство, т.е. нужно будет как минимум 3 программы (андроид, ios, windows)
  • Как открывать страницу по ссылке из push уведомления?

    402d
    @402d
    Vapid в смысле rfc 8292 ? Или вы пишите что-то на более низком уровне и наворченное или уточнение про вапид имелось совсем другое