2

我编写了一个应用程序,它利用了 android wear 上的 system_alert_window。由于棉花糖,此权限默认被撤销。我已通过手机设置在手机端应用程序上启用此权限。但是权限仍然在 android wear 端应用程序上被拒绝,并导致 android wear 端应用程序崩溃并出现权限被拒绝异常。有没有办法在 Android Wear 端启用此权限?

4

2 回答 2

2

简短的回答:将您的手表应用程序保持在 targetSdkVersion 22 上。

长答案:此权限不使用通常的 requestPermissions() 流程。文档中有更多信息,但归结为用户启用此权限的特殊设置 UI - 谷歌似乎没有在 Wear 上实现该 UI。没有它,任何(非系统)应用程序都无法获得此权限,并且任何尝试使用它的应用程序都会因以下错误而崩溃:

android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@a597673 -- permission denied for this window type

但是,此限制仅适用于面向 SDK 级别 23(及更高级别)的应用。所以暂时让你的应用保持在 22,希望谷歌能在你需要增加它之前填补这个空白。

2016 年 12 月 22 日更新:此问题已在 Android Wear 2.0 上修复。对于 Wear 1.x,仍然没有比上述更好的解决方案,但 Google 已经为 Wear 2 实现了权限 UI,当它发布时,手表应用程序应该能够以标准意图链接到它:

startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
        Uri.parse("package:" + getPackageName())));
于 2016-01-25T03:49:01.850 回答
0

您应该在可穿戴设备上动态地向用户请求权限,就像在手机端一样。查看官方教程在 Android Wear 上请求权限

于 2015-12-31T05:49:53.683 回答