Question
是否可以从手机设置中授予附近 API 权限?
- 如果是这样,怎么办?
- 答案是否因设备 API 级别而异?
如果需要,请继续阅读以获取更多背景信息:)
一般背景
当面向 API 级别 23 或更高级别的应用安装在运行 API 级别 23 或更高级别的设备上时,用户可以通过两种不同的方式授予或撤销对需要危险权限的操作的访问权限:
- 当应用程序在前台运行时,调用requestPermissions http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)导致向用户显示提示;
- 从“设置”->“应用程序”屏幕,用户可以在其中授予/撤销对逐个应用程序需要危险权限的操作的访问权限,或者逐组 http://developer.android.com/guide/topics/security/permissions.html#perm-groups basis.
特别是,拒绝通过机制#1(至少)两次请求的权限,并且在最近显示的提示中选中“不再询问”的用户:
仍然可以选择稍后使用机制 #2 授予该权限。
附近API背景
当应用程序希望使用附近消息 API 时,可以使用类似于(但不同于)#1 的机制在运行时请求必要的权限 https://developers.google.com/nearby/messages/android/pub-sub#implement_the_runtime_consent_flow。据我所知,这些权限没有在任何标准中表示危险的权限组。
就像典型的危险权限一样,用户可以指示应用程序“不再询问”附近的 API 权限(来自 Pocket Casts 的示例;运行 API 23 的设备):
但是,如果用户选择此选项,它将看起来是完全永久的。以下是在选中“不再询问”的情况下拒绝访问附近 API 后立即列出的 Pocket Cast 的权限组:
唯一存在危险的权限组是存储,并且仍然授予访问权限。没有附近 API 权限的迹象,因此我不知道在达到此状态后如何可能授予对这些权限的访问权限......(除了卸载并重新安装应用程序,这并不理想!)
Edit
在最近的测试中,我似乎无法永久拒绝“附近”权限。即使在第一次拒绝后,“不再询问”复选框也不会出现。我猜这是由于我手机上运行的 Google Play 服务版本的更改引起的。这是权限对话框现在的样子。请注意,它包括与查找附近权限设置相关的具体说明!
As 张莫里森在评论中指出 https://stackoverflow.com/questions/36511317/is-it-possible-to-grant-nearby-api-permissions-from-phone-settings?noredirect=1#comment60630160_36511317,附近的API权限控制位于“设置”->“Google”下。下面是一个动画 gif,展示了如何从运行 Marshmallow 的 Nexus 6 的设置屏幕开始,逐个应用程序授予对附近 API 的访问权限:
作为一名开发人员,事后看来,这对我来说是有意义的 - 这是将附近权限管理向后移植到 Marshmallow 之前的设备的唯一方法。但作为一名用户,我确实发现这令人困惑!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)