2016-06-30 4 views
1

Мне нужно предоставить разрешение на использование устройства для изменения параметров автоматизации устройства, на котором он запущен (для целей тестирования).Невозможно предоставить разрешение SET_ANIMATION_SCALE программно

Я добавил манифестировать:

<uses-permission android:name="android.permission.SET_ANIMATION_SCALE"/> 

И в моей деятельности на резюме:

String[] permissions = new String[1]; 
permissions[0] = Manifest.permission.SET_ANIMATION_SCALE; 
ActivityCompat.requestPermissions(getCurrentActivity(), permissions, 0); 
Log.d("ISGRANTED", " " + (ContextCompat.checkSelfPermission(getCurrentActivity(), permissions[0]) == PackageManager.PERMISSION_GRANTED)); 

И ничего не происходит. Я тестирую на Android Api 23+, и я не получаю никакого диалога, чтобы получить разрешение. Бревенчатые возвращается:

06-30 15: 03: 32,757 17771-17799/my.app.package D/ISGRANTED: ложные

Но если я заменю permisions[0] с Manifest.permission.GET_ACCOUNTS (который также находится в моей проявляется выше разрешения SET_ANIMATION_SCALE), тогда он работает. Появится диалоговое окно, и журнал вернет значение true.

Любая идея, в чем проблема?

+0

Очевидно, что: * Не для использования сторонними приложениями. * – Selvin

+0

Вы знаете какой-либо другой способ отключить анимацию в AVD после запуска с параметром -wipe-data? Если бы я мог сделать это из терминала, то это нормально, я думаю. – F1sher

+1

Как это могло бы работать тогда? https://github.com/metova/Cappuccino Они используют то же разрешение. Может быть, мне что-то не хватает ... хм ... – F1sher

ответ

1

Пожалуйста, взгляните на мой плагин Gradle, Cappuccino. Он автоматизирует процесс отключения системных анимаций для тестирования Espresso. Подробные инструкции приведены на странице Github.

+1

Спасибо. Я уже написал графический плагин для моих собственных целей, вдохновляясь вашим кодом. Это дало мне также некоторое представление о том, как изменить настройки устройства с помощью рефлексии. Это было хорошее исследование для меня :) – F1sher

+1

Мне бы хотелось увидеть ваш плагин! Не могли бы вы поделиться ссылкой? – AutonomousApps

1

От here или here, потому что это не для использования сторонних приложений:

"android.permission.SET_ANIMATION_SCALE" : ["signature|system|development", "Modify the global animation scaling factor. Not for use by third-party applications."],

ProtectionLevel (from here):

подписных 2 Разрешение, что система должна предоставлять только в том случае, если запрашивающее приложение подписывается с тем же сертификатом, что и приложение, которое объявило о разрешении. Если сертификаты совпадают, система автоматически предоставляет разрешение без уведомления пользователя или запроса на явное одобрение пользователя.

system 0x10 Старый синоним "привилегированный".

привилегированный 0x10 Дополнительный флаг от базового типа разрешения: это разрешение также может предоставляться любым приложениям, установленным в качестве привилегированных приложений на системном изображении. Не используйте эту опцию, так как уровень защиты подписи должен быть достаточным для большинства потребностей и работы независимо от того, где именно установлены приложения. Этот флаг разрешения используется для определенных особых ситуаций, когда у нескольких поставщиков есть приложения, встроенные в системный образ, которым необходимо явно передавать конкретные функции, поскольку они строятся вместе.

development 0x20 Дополнительный флаг из базового типа разрешения: это разрешение также может (при необходимости) предоставляться приложениям разработки.

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