我制作了一个非常非常小的演示应用程序,用于在运行Android版本6.0.1的Nexus 5上重现该错误。该应用程序位于github上:https://github.com/lexi-sr/LayerPermission
我最近添加了两个提交,其中的目标是API 23并在运行时请求权限,但它仍然无效。
在这两个提交中,它具有以下设置:
1)在提交"删除图层依赖项允许弹出对话框请求perm ...",它没有图层依赖:
方法ActivityCompat.requestPermissions
打开一个请求“联系”权限的对话框,onRequestPermissionsResult
方法日志中的日志语句已授予该权限。
2)在提交"请求权限不起作用"它有层依赖性的地方:
ActivityCompat.requestPermissions
不会打开任何对话框,但onRequestPermissionsResult
中的日志语句仍会打印,记录它没有权限。
似乎添加图层依赖项会抑制在运行时请求权限的能力。为什么会这样?
答案 0 :(得分:2)
幸运的是,图层支持团队能够帮助我解决这个问题。它在演示应用程序(针对SDK 23)和我的真实应用程序(针对SDK 22,以避免在运行时请求权限)解决了我的问题。在我将tools:node="replace"
放入GET_ACCOUNTS的使用权限行后,弹出对话框能够显示并在演示应用程序中授予权限,并且在针对SDK 22的真实应用程序中不再缺少权限。
以下是Layer支持团队的详细说明:
图层SDK使用a请求GET_ACCOUNTS权限 maxSdkVersion of 18.看来当清单出现时 合并这会覆盖清单中的权限请求, 因此不要求19岁以上的许可。你可以尝试追加吗? 工具:节点="替换"你的应用程序的清单中的权限?该 该行应为:
<uses-permission android:name="android.permission.GET_ACCOUNTS" tools:node="replace" />
请在此处查看maxSdkVersion文档: http://developer.android.com/guide/topics/manifest/uses-permission-element.html
请参阅此处了解工具:节点文档: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools:node-markers
彼得