intent filter verification service что это за программа на андроид
Некоторые возможности использования Intent’ов
Введение
Объекты типа Intent могут быть использованы для общения между отдельными частями Android приложения, либо между различными приложениями системы. Мощь механизма интентов заключается в том, что с его помощью можно обращаться к любому установленному в системе приложению. Это позволяет повторно использовать некоторые компоненты и значительно сократить время на разработку.
В этой статье я покажу некоторые возможности использования класса Intent для обращения к системным приложениям.
Итак, что можно сделать с помощью Intenta:
1. Позвонить
Необходимо также добавить разрешение совершать звонки:
Либо разрешение для экстренных вызовов:
Звонки можно также совершать, указав интенту первый параметр как ACTION_DIAL. При этом будет открываться телефонная книга с указанным номером, но сам звонок автоматически совершаться не будет. Этому параметру не нужны разрешения в манифесте.
2. Отправить смс
Т.к. этот код не отправляет смс напрямую, а запускает стандартное активити для отправки смс, то никаких разрешений указывать не нужно.
3. Получить контакт из телефонной книги
Этот код откроет стандартное приложение контактов. Метод startActivityForResult позволяет получить uri выбранного контакт из параметра Intent data переопределенного метода onActivityResult.
Приведенный выше код показывает в приложении контактов сразу все контакты пользователя, включая почтовые. Если необходимо выбрать только контакт из телефонной книги, можно воспользоваться следующим кодом:
Для чтения списка контактов необходимо также добавить в манифест разрешение:
4. Открыть ссылку в браузере
Данный код откроет переданную в параметре ссылку в одном из установленных браузеров. При этом пользователь сможет сам выбрать браузер для просмотра. Eсли ссылка ведет на YouTube, то можно сразу открыть видео стандартным YouTube приложением.
С помощью этого интента можно также открыть стандартный клиент Android Market с ссылкой на какое-либо приложение. Для этого необходимо в параметр uri передать ссылку вида market://search?q=search query, где search query необходимо заменить соответствующим поисковым запросом.
Разрешения на интернет указывать не нужно, т.к. сеть используется не напрямую, а через приложение браузер.
5. Расшарить контент/написать письмо
Интенту можно задать тему и текст контента, который необходимо разшарить. Метод Intent.createChooser() создает диалог выбора соответствующего приложения.
Если необходимо разшарить медиа контент (изображение/видео), то нужно указать соответствующий тип контента в методе setType, например mailIntent.setType(«image/png»);, а также добавить сам контент в extra интента:
С помощью этого интента можно также отправить электронную почту по конкретному адресу:
6. Открыть карту по определенным координатам либо запросу
7. Сделать снимок с камеры
Этот код запускает стандартное приложение камеры. Полученное с камеры изображение можно обработать в методе onActivityResult:
Изображение, полученное с камеры при этом можно сохранить в конкретной директории, добавив параметр в интент:
Для использования этого интента не нужно разрешения android.permission.CAMERA, т.к. камера используется не напрямую, а всего лишь вызывается встроенное приложение камеры. Однако рекомендуется добавить в AndroidManifest следующую строку:
Таким образом, люди с девайсами без встроенной камеры (судя по всему, такое тоже бывает) не будут видеть ваше приложение на маркете.
8. Позвонить какому-либо контакту через Skype
Для совершения звонка через скайп интенту необходимо указать конкретное имя активити и пакета, к которым он будет обращаться. Это немного усложняет код, т.к. в двух разных версиях скайпа имена пакетов отличаются. Необходимо выполнять проверку того, какая версия скайп клиента установлена в системе, и установлена ли она вообще. Для проверки можно использовать следующий метод:
Этот метод проверяет в системе наличие приложения, способного ответить на конкретный интент. С использованием этого метода код звонка через скайп будет выглядеть следующим образом:
Более простым методом проверки наличия приложения в системе является перехват ActivityNotFoundException, которое будет вылетать в методе startActivity. Однако это позволит всего лишь среагировать на проблему, но не предотвратить ее. Например, используя вышеприведенный метод isIntentAvailable можно вовремя сделать соответствующий контрол неактивным, либо перенаправить пользователя на Android Market для установки соответствующего приложения.
9. Использовать Speech to Text для распознавания голоса
Этот код запускает приложение распознавания речи. Если произнести что-либо, система обработает голос и вернет результат в метод onActivityResult:
Давайте будем прямыми в своих intent
В Android 12 появится важное изменение, улучшающее безопасность платформы целиком и всех приложений, предназначенных для работы с этой версией ОС. Активити, сервисы и бродкаст ресиверы (broadcast receivers), в которых указаны интент-фильтры (intent-filters), должны явно обозначать, будут ли они доступны для других приложений или компонентов системы.
Далее перевод статьи про проблемы и решения, которые могут возникнуть при переходе на новую версию.
Ошибки
Если установка вашего приложения завершается одним из сообщений ниже, скорее всего, это связано с новыми изменениями.
Решение
Но не следует бездумно добавлять `android:exported=”true”` ко всем этим элементам. Просмотрите каждый компонент, включающий в себя и спросите себя: «Хочу ли я, чтобы любое приложение, установленное на устройстве, могло запустить этот компонент?».
Ответ на этот вопрос зависит от назначения приложения, взаимодействия с ним другого ПО и иных, более специфических условий. Ниже представлены несколько распространённых примеров интент-фильтров с рекомендуемым значением exported-атрибута и объяснением выбора.
Активити с : android:exported=”true”
Скорее всего, это MainActivity вашего приложения и поскольку лаунчер в Android может быть обычным приложением, атрибут exported необходим, иначе лаунчер не сможет запустить её.
Эта активити отвечает за обработку действия «открыть с помощью» из других приложений.
Позволяет обрабатывать контент, которым могут делиться другие приложения.
Если сервис предоставляет другим приложениям доступ к медиа-библиотеке вашего, то он должен быть экспортированным (exported), чтобы разрешить приложениям использовать эту библиотеку. Скорее всего, такой сервис, напрямую или опосредованно, наследуется от MediaBrowserServiceCompat. Если это не так, то возможно, атрибут exported необязателен.
Это сервис Firebase Cloud Messaging, он должен наследоваться от FirebaseMessagingService и не должен быть экспортированным, поскольку Firebase может запустить компонент вне зависимости от факта его экспортации. Подробности можно узнать по ссылке: Set up a Firebase Cloud Messaging client app on Android
Система может доставлять это событие в бродкаст ресивер вне зависимости от факта экспортации.
Бэкграунд
Вплоть до Android 12, активити, сервисы и бродкаст ресиверы с обозначенным интент-фильтром автоматически становились экспортированными.
Эта активити экспортирована по умолчанию:
И хотя подобное дефолтное поведение выглядит разумным, ошибка может сделать ваше приложение уязвимым. Например, приложение имеет активити для проигрывания видео:
Позже обнаруживается, что мы обращаемся к этой активити из множества разных мест в приложении, и, чтобы уменьшить связность, меняем её, включая интент-фильтр для выбора активити системой:
Внезапно появляется проблема. Наша активити, созданная исключительно для использования внутри приложения, внезапно становится экспортированной!
Но при таргете на Android 12 система предотвратит подобное поведение, требуя от нас явно указать значение атрибута android:exported. И поскольку в данном случае мы не хотим, чтобы активити была экспортирована — ставим атрибут android:exported = false, чтобы обезопасить приложение.
Для улучшения безопасности в Android 12 появится важное изменение. Приложения, у которых эта версия указана в target SDK, должны будут явно объявлять значение атрибута `android:exported` для любых активити, сервисов или ресиверов, которые используют интент-фильтры в AndroidManifest.xml. Без него приложение просто не установится.
Тщательно принимайте решение касательно значения этого атрибута и, если сомневаетесь — предпочитайте android:exported=”false”.
Для получения более подробной информации об интентах и интент-фильтрах смотрите Receiving an implicit intent.
О других изменениях безопасности и приватности читайте на этой странице.
Руководство Android Intents
View more Tutorials:
1- Что такое Intent?
intent это объект класса android.content.Intent. Ваш код можно отправить на Intent в систему Android с определением компонентов, которые вы хотите достичь.
Например, через startActivity(), вы сможете дать определение Intent который использвует для вызова другого Activity. В целевом Activity через метод startActivity() вы сможете определить намерение отправителя вызвать данный (start) Activity.
Intent может содержать данные через Bundle. Данные могут использоваться принимающим компонентом.
2- Вилы Intent
Android поддерживает 2 вида Intent это явные (explicit) Intent và и неявные (implicit) Intent.
Приложение может определить целевой компонент непосредственно Intent (явное намерение) или запросить систему Android оценить загистрированные компоненты основываясь на намерения данных (неявные Intent).
3- Явный Intent
4- Фильтр Intent (Intent Filter)
5- Неявный Intent
View more Tutorials:
Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.
HwLBSService — что это на Android и для чего нужен? (com.huawei.lbs.HwLBSService)
Предустановленные программы на телефоне часто не имеют описания, но при этом могут позволить себе использовать ресурсы телефона. Об одном таком приложении сегодня пойдет речь — HwLBSService. Постараемся разобраться.
Собрал информацию со всех уголков интернета, однако к сожалению — ее очень мало. Если вы знаете что это за приложение — напишите в комментариях, будет полезно!
HwLBSService (com.huawei.lbs.HwLBSService), а также GeofenceService — собственные сервисы Huawei, нужны для определения местоположения смартфона во время блокировки. Соответственно могут использовать модуль GPS.
Отключение под вопросом (читать ниже).
Может активно использовать батарею. Один юзер отключил, пишет — глюков/лагов не наблюдает, телефон работает в штатном режиме, звонки принимает, GPS работает.
HwLBSService может иметь доступ к отпечатков пальцев, при этом отправлять данные на такие сервера:
Как видим — адреса легальные, вирусное/подозрительное отсутствует.
Для энергосбережения HwLBSService вроде как можно отключить.
Нашел PDF файл Декларация соответствия, в котором идет перечень приложений телефона и их описание. Присутствует и HwLBSService, в описании сказано — Intent Filter Verification Service.
Погуглив, выяснил: Intent Filter Verification Service — системный сервис проверки доступности дефолтных ссылок приложений, комментарий форума 4PDA:
Простыми словами: имеется ввиду ссылки не в прямом смысле. Например пришло сообщение с любым веб-адресом. Android должен понять — это адрес и его нужно открывать браузером. Пример #2 — пришла СМС-ка, в содержании — номер телефона. Android должен понимать — по телефону можно позвонить Скайпом, Вайбером, в итоге выдаст запрос-предложение. В данном случае веб-сайт, телефон — является ссылкой, обьектом, который должен ссылаться на соответствующее приложение для дальнейшей обработки (Скайп предложит позвонить, браузер откроет сайт). Касается и других приложений.
Минутку! Мое мнение — HwLBSService это определение георасположения, а не Intent Filter Verification Service. Все источники мной найденные — указывают именно на первый вариант.
К сожалению информации в интернете — очень мало. Однако, скорее всего HwLBSService и правда относится к определению георасположения. Вроде можно отключить без последствий, однако бэкап Андроида перед этим все таки лучше сделать.
Как отключать/удалить?
Внимание! На форуме 4PDA нашел сообщение — при попытке отключить одно из приложений EUIReceive, HwChrService, androidhwext, HwLBSService — может произойти бутлуп (цикличная перезагрузка):
Вывод — сперва делаем бэкап, после уже отключаем.
Заключение
Надеюсь информация пригодилась. Удачи и добра!