5

问题

是否可以通过手机设置授予 Nearby API 权限?

  • 如果是这样,怎么做?
  • 答案是否因设备 API 级别而异?

如果需要,请继续阅读以获取更多上下文:)


一般背景

当面向 API 级别 23 或更高级别的应用程序安装在运行 API 级别 23 或更高级别的设备上时,用户可以通过两种不同的方式授予或撤销对需要危险权限的操作的访问权限:

  1. 当应用程序在前台运行时,调用会 requestPermissions导致向用户显示提示;
  2. 从“设置”->“应用程序”屏幕,用户可以逐个应用程序或逐个组授予/撤销对需要危险权限的操作的访问权限。

特别是,一个用户拒绝了通过机制 #1 请求(至少)两次的权限,并且在最近显示的提示中选中了“不再询问”:

仍然可以选择稍后使用机制 #2 授予该权限。


附近 API 背景

当应用程序希望使用 Nearby Messages API 时,可以使用类似于(但不同于)#1 的机制在运行时请求必要的权限。据我所知,这些权限不在任何标准的危险权限组中表示。

就像典型的危险权限一样,用户可以指示应用程序“不再询问”附近的 API 权限(来自 Pocket Casts 的示例;运行 API 23 的设备):

来自 Pocket Casts 的屏幕截图,显示了 Nearby API 权限提示; 运行 API 23 的设备

但是,如果用户选择此选项,它似乎是完全永久的。以下是Pocket Casts 在拒绝访问附近的API 并选中“不再询问”后立即列出的权限组:

显示 Pocket Casts 的应用权限屏幕的系统设置屏幕截图; 运行 API 23 的设备

存在的唯一危险权限组是存储,并且仍然授予访问权限。没有附近 API 权限的迹象,因此我看不出在达到此状态后如何授予对这些权限的访问权限......(除了卸载和重新安装应用程序,这并不理想!)

编辑

在最近的测试中,我似乎无法永久拒绝附近的许可。即使在第一次拒绝之后,“不再询问”复选框也不会出现。我猜这是由我手机上运行的 Google Play 服务版本的更改引入的。这是权限对话框现在的样子。请注意,它包括与定位“附近”权限设置相关的特定说明!

来自 Pocket Casts 的屏幕截图,显示了更新的 Nearby API 权限提示; 运行 API 23 和 Google Play 服务 9.0.83 的设备

4

1 回答 1

5

正如Morrison Chang 在评论中指出的那样,附近的 API 权限控制位于 Settings -> Google 下。这是一个动画 gif,展示了如何从运行 Marshmallow 的 Nexus 6 的设置屏幕开始,逐个应用授予对 Nearby API 的访问权限:

一个 GIF 动画,展示了如何从运行 Marshmallow 的 Nexus 6 的设置屏幕授予对附近 API 的访问权限

作为一名开发人员,事后看来,这对我来说是有意义的——这是将 Nearby 权限管理反向移植到 Marshmallow 之前的设备的唯一方法。但是,作为用户,我确实发现这令人困惑!

于 2016-04-09T11:40:16.023 回答