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

时间:2016-04-09 00:21:31

标签: android android-permissions google-nearby

问题

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

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

如果需要,请继续阅读以获取更多信息:)

一般背景

如果在运行API级别23或更高级别的设备上安装了针对API级别23或更高级别的应用,则可以通过两种不同的方式授予或撤消对需要危险权限的操作的访问权限:

  1. 当应用程序在前台运行时,调用requestPermissions会导致向用户显示提示;
  2. 来自设置 - >应用程序屏幕,用户可以在应用程序或group-by-group的基础上授予/撤消对需要危险权限的操作的访问权。
  3. 特别是,拒绝通过机制#1请求(至少)两次的权限的用户,以及在最近显示的提示中检查过“永不再询问”的用户:

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

    附近的API背景

    当应用程序希望使用Nearby Messages API时,可以使用类似于(但不同于)#1的机制来request the necessary permissions at runtime。据我所知,这些权限未在任何标准危险权限组中表示。

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

    A screenshot from Pocket Casts showing the Nearby API permissions prompt; device running API 23

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

    A screenshot from system settings showing the App permissions screen for Pocket Casts; device running API 23

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

    修改

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

    A screenshot from Pocket Casts showing the updated Nearby API permissions prompt; device running API 23 and Google Play Services 9.0.83

1 个答案:

答案 0 :(得分:5)

作为pointed out by Morrison Chang in the comments,附近的API权限控制位于“设置” - >下。谷歌。这是一个动画gif,展示了如何在逐个应用的基础上授予对Nearby API的访问权限,从运行Marshmallow的Nexus 6的设置屏幕开始:

An animated gif showing how to grant access to the Nearby APIs from the settings screen of a Nexus 6 running Marshmallow

作为开发人员,事后看来这对我来说很有意义 - 这是附近权限管理可以向后移植到Marshmallow之前设备的唯一方法。但是,作为一个用户,我肯定发现这令人困惑!