我需要授予我的设备权限,以更改其运行的设备的自动化设置(用于测试目的)。
我已添加到清单:
<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:false
但是,如果我将permisions[0]
替换为Manifest.permission.GET_ACCOUNTS
(这也是我在SET_ANIMATION_SCALE权限之上的清单),那么它就可以了。出现对话框,日志返回true。
知道问题是什么?
答案 0 :(得分:1)
"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 仅当请求的应用程序使用与声明权限的应用程序相同的证书进行签名时,系统才会授予的权限。如果证书匹配,系统会自动授予权限,而不会通知用户或要求用户明确批准。
系统0x10 &#34;特权&#34;的旧同义词。
特权0x10 来自基本权限类型的附加标志:此权限也可以授予在系统映像上作为特权应用程序安装的任何应用程序。请避免使用此选项,因为签名保护级别应该足以满足大多数需求,并且无论应用程序的确切位置如何都可以正常工作。此权限标志用于某些特殊情况,其中多个供应商在系统映像中内置了应用程序,这些应用程序需要明确共享特定功能,因为它们是一起构建的。
开发0x20 基本权限类型的附加标志:此权限也可以(可选)授予开发应用程序。
答案 1 :(得分:1)
请看看我的Gradle插件,Cappuccino。它可以自动执行Espresso测试禁用系统动画的过程。有关Github的详细说明。