2013-07-26 5 views
5

Я слышал, что OS 4.3 имеет скрытую функцию для отключения некоторых разрешений без переупаковки APK. Когда мы выпускаем приложение, мы добавляем необходимые разрешения и делаем работу приложения. Но эта функция может отключать разрешения. Я знаю, что какое-то приложение делает это, хотя это взломать, и мне не нужно заботиться. Но с OS 4.3 пользователь может легко это сделать.Что происходит, когда разрешение отключено с новой функцией ОС 4.3?

Теперь мой вопрос в том, когда разрешение отключено, выполняет ли соответствующее исключение API? (Я так думаю.) Если это так, я должен добавить try-catch для некоторых операций, иначе начинающий пользователь может в конечном итоге подумать, что мое приложение плохо спроектировано.

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

(Кто-то может закрыть этот вопрос говоря, что это не настоящий вопрос.)

+0

Помимо добавления 'uses-feature' и установки' android: required = "false" 'там, где это необходимо, я не могу видеть из Android 4.3 doco, как преодолеть эту проблему. Имейте в виду, что я только начал экспериментировать с API 18 (Android 4.3). – ChuongPham

ответ

5

Я слышал, что OS 4.3 спрятался функцию отключить некоторые права без переупаковки APK.

Рабочим термином для этого является «App Ops», основанный на названии действия, которое позволяет пользователю управлять этими операциями.

Теперь мой вопрос в том, когда разрешение отключено, вызывает ли соответствующее исключение API?

Это будет зависеть от конкретной операции, которая была заблокирована. Например, при попытке установить open() a Camera, когда это было заблокировано App Ops, вы получите RuntimeException. Но запрос контактов, когда пользователь заблокировал это в App Ops, просто возвращает пустые результирующие наборы.

Я должен добавить примерочный улов для некоторых операций в противном случае начинающего пользователь может в конечном итоге думать мое приложение плохо разработан

Возможно. Это зависит от того, что ваше приложение может заблокировать и каково поведение блокировки.

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

Приложение Ops не отменяет разрешения. PackageManager и checkPermissions() все равно сообщают, что у вас есть разрешение, даже если приложение Ops блокирует некоторые операции, связанные с этим разрешением.

В настоящее время я не знаю прямого способа определить, были ли вы заблокированы App Ops.

Я начал a FAQ on my blog, чтобы попытаться собрать информацию об этом, до тех пор, пока официальные данные не появятся (если вообще когда-либо).

+0

Благодарим вас за ответ. Эта новая функция/приложение будет затронута многими из нас. Я надеюсь, что Google откроет информацию и поможет нам подготовиться к этому в ближайшее время. – Tomcat