2013-10-10 4 views
4

мне нужно использовать разрешение android.permission.CHANGE_COMPONENT_ENABLED_STATE в моем коде, потому что мне нужно обновить компонент другого APK моего проекта, но это не кажется, действительно работают для меняандроид разрешения - CHANGE_COMPONENT_ENABLED_STATE

здесь мой код:

<permission 
    android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" 
    android:protectionLevel="signatureOrSystem"/> 

final int permission = ctx.checkCallingPermission(android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE); 

final boolean allowedByPermission = (permission == PackageManager.PERMISSION_GRANTED); 
L.d(TAG, "allowedByPermission :" + allowedByPermission + " permission:" + permission); 
if(allowedByPermission) {} 

allowedByPermission всегда регистрировать ложь .. не уверен, могу ли я что-то пропустить?

ответ

4

Во-первых, для вашего приложения потребуется <uses-permission>, а не <permission>.

Во-вторых, ваше приложение не может удерживать это разрешение, если оно не установлено на системном разделе (например, пользователем с корневым устройством) или подписывается одним и тем же ключом подписи, который подписывал прошивку системы.

+0

Вы можете указать любой пример ? также оба apk генерируются с одинаковой подписью, поэтому они должны работать правильно? – AJit

+0

@AJit: «И оба apk генерируются с одинаковой подписью, чтобы они работали правильно?» - Нет, не должно. Разрешение предоставит вам право отключить * любой * компонент * любого * приложения, и это очень привилегированная операция. – CommonsWare

+0

также вы можете дать какие-либо сведения об этом разрешении CHANGE_COMPONENT_ENABLED_STATE? используем ли мы только корневые устройства? – AJit

Смежные вопросы