不同的android权限名前缀有什么区别?

What is the difference between different android permission name prefix?

在 android 清单中,有时会有如下命名的权限: com.google.android.gms.permission...android.permission....

这个命名是随意的还是有不同前缀的原因?

我想知道这是为了能够找到正确的权限我通常会去 https://developer.android.com/reference/android/Manifest.permission 此 link 仅包含具有 "android.permission.*" 的权限 我想知道在某处是否有针对所有其他权限的单一引用?

P.S。下面是一个 ACTIVITY_RECOGNITION 被添加到清单的例子,试图理解它。

<!-- Required for 28 and below. -->
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<!-- Required for 29+. -->
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />

Is this naming arbitrary or is there a reason for having different prefixes?

android.permission 用于 Android 开源项目中的权限。

com.google.android.gms.permission 用于我们认为是 Play 服务的权限。

其他应用可以定义自己的权限,最好是在自己的命名空间中。但是,它们只是字符串,因此您或我可以尝试定义以 android.permission.

开头的自定义权限

I would like to know if there is a single reference somewhere for all the other permissions?

权限是来自任意开发人员的任意字符串。没有办法知道它们都是什么。我不知道 Google 有文档列出所有 Play 服务的权限,但我不能排除它。

Below is an example of ACTIVITY_RECOGNITION being added to the manifest, trying to make sense of it.

这与最初由 Play 服务提供然后移至 Android 本身的功能相关。因此,权限从 Play Services 命名空间开始,然后被克隆到 AOSP 命名空间中。