Я знаю, что приложения Google Play не могут делать ничего, что не прописано в них AndroidManifest.xml
, и будут заблокированы. Я хочу знать, заблокированы ли приложения, не принадлежащие Google Play, такими же мерами безопасности.
Будет ли Android сообщать мне, какие разрешения им требуются перед установкой, и блокировать функции, использующие разрешения, не указанные в манифесте приложений, отличных от Google Play? Потому что Google говорит:
В случае, если приложение пытается использовать защищенную функцию, которая не была объявлена в манифесте приложения, сбой разрешения обычно приводит к тому, что в приложение возвращается исключение безопасности. Проверки разрешений защищенного API применяются на самом низком возможном уровне, чтобы предотвратить обход. Пример обмена сообщениями с пользователем при установке приложения при запросе доступа к защищенным API показан на рисунке 2.
Это относится к приложениям не из Google Play?
Приложение должно объявить все свои требования к разрешениям, потому что они предоставляются ему при установке.
См. раздел «Использование разрешений» здесь: http://developer.android.com/guide/topics/security/permissions.html .
Будет ли Android сообщать мне, какие разрешения им требуются перед установкой?
В общем, да. В большинстве (если не во всех) устройствах Android есть системное приложение под названием «Установщик пакетов», которое управляет установкой/обновлением приложения. Когда вы устанавливаете APK-файл из неизвестного источника, это приложение запускается и показывает все разрешения, запрашиваемые приложением, что выглядит следующим образом:
Установщик пакетов на KitKat
Будет ли Android блокировать функции, использующие разрешения, не указанные в манифесте приложений, не принадлежащих Google Play?
Во время установки Android не проверяет/не проверяет, требует ли функция специального разрешения для запуска. Другими словами, пользователь по-прежнему может установить приложение. Тем не менее, приложение будет вызывать ошибки SecurityException
(которые могут аварийно завершать работу/вести себя непредсказуемо/ничего не делать, в зависимости от того, как оно обрабатывается) при запуске функции, для которой требуется разрешение, но которая не объявлена в файле манифеста. Это относится ко всем приложениям, независимо от того, где они установлены .
Пример : выполнение сетевой операции без объявления <uses-permission android:name="android.permission.INTERNET" />
приведет к сбою приложения с трассировкой стека:
E/AndroidRuntime(18698): Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
.
жующий стул