我制作了一个非常非常小的演示应用程序,在运行 Android 版本 6.0.1 的 Nexus 5 上重现该错误。该应用程序位于 github 上:https://github.com/lexi-sr/LayerPermission
我最近添加了 2 个提交,其中它针对 API 23 并在运行时请求权限,但它仍然不起作用。
在这 2 个提交中,它具有以下设置:
1) 在提交“删除层依赖项允许弹出对话框请求权限...”中,它没有层依赖项:方法ActivityCompat.requestPermissions
打开一个请求联系人权限的对话框,以及一个日志语句onRequestPermissionsResult
方法记录已授予权限。
2)在提交“请求权限不起作用”中,它确实具有层依赖性:
ActivityCompat.requestPermissions
不会打开任何对话框,但会打开一条日志语句onRequestPermissionsResult
仍然打印,记录它没有权限。
添加层依赖关系似乎会抑制在运行时请求权限的能力。为什么会发生这种情况?
幸运的是,图层支持团队能够帮助我解决这个问题。它解决了我在演示应用程序中的问题(针对 SDK 23)and我的真实应用程序(针对 SDK 22,以避免在运行时请求权限)。我把之后tools:node="replace"
进入我的 GET_ACCOUNTS 的使用权限行,弹出对话框能够出现并在演示应用程序中授予权限,并且在针对 SDK 22 的真实应用程序中不再缺少该权限。
以下是 Layer 支持团队的详细解释:
Layer SDK 使用以下方式请求 GET_ACCOUNTS 权限:
maxSdkVersion 为 18。 看来,当清单获取时
合并后,这将覆盖清单中的权限请求,
因此 19 岁以上的人无需申请许可。您可以尝试附加吗
tools:node="replace" 到应用程序清单中的权限?这
该行应读为:
<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
Peter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)