无法在Android Wear上获得MANAGE_WRITE_SETTINGS权限

时间:2016-03-19 07:19:49

标签: wear-os android-6.0-marshmallow android-permissions

我尝试使用以下代码在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 }

1 个答案:

答案 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团队为其添加系统用户界面。