问题
是否可以通过手机设置授予 Nearby API 权限?
- 如果是这样,怎么做?
- 答案是否因设备 API 级别而异?
如果需要,请继续阅读以获取更多上下文:)
一般背景
当面向 API 级别 23 或更高级别的应用程序安装在运行 API 级别 23 或更高级别的设备上时,用户可以通过两种不同的方式授予或撤销对需要危险权限的操作的访问权限:
- 当应用程序在前台运行时,调用会
requestPermissions
导致向用户显示提示; - 从“设置”->“应用程序”屏幕,用户可以逐个应用程序或逐个组授予/撤销对需要危险权限的操作的访问权限。
特别是,一个用户拒绝了通过机制 #1 请求(至少)两次的权限,并且在最近显示的提示中选中了“不再询问”:
仍然可以选择稍后使用机制 #2 授予该权限。
附近 API 背景
当应用程序希望使用 Nearby Messages API 时,可以使用类似于(但不同于)#1 的机制在运行时请求必要的权限。据我所知,这些权限不在任何标准的危险权限组中表示。
就像典型的危险权限一样,用户可以指示应用程序“不再询问”附近的 API 权限(来自 Pocket Casts 的示例;运行 API 23 的设备):
但是,如果用户选择此选项,它似乎是完全永久的。以下是Pocket Casts 在拒绝访问附近的API 并选中“不再询问”后立即列出的权限组:
存在的唯一危险权限组是存储,并且仍然授予访问权限。没有附近 API 权限的迹象,因此我看不出在达到此状态后如何授予对这些权限的访问权限......(除了卸载和重新安装应用程序,这并不理想!)
编辑
在最近的测试中,我似乎无法永久拒绝附近的许可。即使在第一次拒绝之后,“不再询问”复选框也不会出现。我猜这是由我手机上运行的 Google Play 服务版本的更改引入的。这是权限对话框现在的样子。请注意,它包括与定位“附近”权限设置相关的特定说明!