2016-11-06 3 views
0

Я знаю, что некоторые разрешения (например, sdcard_rw, network и т. Д.) Проверяются ядром Linux. Но другие разрешения? Как местоположение, получают boot_boardcast, камеру и т. Д. Если они проверены платформой Android. Можем ли мы написать код вместо рамки для использования без разрешения? Можем ли мы написать код вместо стандартного API Android. Должен ли я читать исходный код Android? Извините, я новичок в Android, и мой английский плохой. Спасибо.Как Android проверяет права доступа к приложениям?

ответ

1

Посмотрите на LocationManager Sourcecode. Код разбросано с помощью операторов throws SecurityException, каждый вызов функции, который может выйти из строя из-за прав доступа, должен проверить разрешение.

VoicemailContentProvider делает это тоже, взгляните на it's source, чтобы узнать, как это реализовано.

EDIT: мое предыдущее заявление о проверке на время связывания лишь частично верно, это может быть для старых версий Android, текущая реализация, кажется, чтобы проверить разрешение на каждом доступе к защищенным ресурсам для обеспечения отменив через (фоновый процесс не сможет вставлять контакты при отмене разрешения, даже если он никогда не создавал новую привязку к ContactProvider.)

+1

Я ничего не писал о предоставлении разрешений. Просто, когда происходит проверка (когда исключение безопасности будет запущено) –

+0

Посмотрите, например, на LocationManager. Проверка разрешений, бросание SecurityExceptions происходит повсюду. https://github.com/android/platform_frameworks_base/blob/master/location/java/android/location/LocationManager.java –

+0

Имеет смысл. Я думаю, вы могли бы добавить свою ссылку в ответ жестко. – GhostCat