我尝试使用以下代码在Android Wear上获取MANAGE_WRITE_SETTINGS权限:
Intent grantIntent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
grantIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(grantIntent);
我得到了这个例外:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.action.MANAGE_WRITE_SETTINGS flg=0x10000000 }
答案 0 :(得分:0)
这听起来与https://code.google.com/p/android/issues/detail?id=199680的基本问题相同。 Android Wear没有实现用户授予这些"超级权限所需的系统UI" (在Marshmallow手机上配置应用的高级屏幕上找到的权限)。
短期来说,解决方案与SYSTEM_ALERT_WINDOW相同:您需要将Wear应用程序保留在targetSdkVersion 22
上。棒棒糖并没有对权限施加相同的限制,所以你应该没问题。
注意:这意味着封闭的掌上电脑应用也需要在22!如果您的Wear应用程序使用"超级权限之一"目标API级别22,但它打包在一个针对23的手持应用程序中,安装到手表将失败。如果您有兴趣,logcat中的错误消息是:
W/WearablePkgInstaller: Wearable com.myapp has a permission “android.permission.SYSTEM_ALERT_WINDOW” that is not granted in the host application.
这不完全是真实的(即使授予您的主机应用程序的权限也会发生这种情况),但结果是相同的:它不起作用。
从长远来看,我建议在http://b.android.com处开设另一个问题来解释此问题,并要求Wear团队为其添加系统用户界面。