android中的<permission-group>有什么用?</permission-group>

时间:2013-06-28 18:28:03

标签: android android-manifest android-permissions

从android文档中可以清楚地了解到 使用“权限组”我们可以创建权限组。 使用android清单文件中的“permission”元素,我们可以定义一个权限。 此权限可以添加到权限组。

如果我们将此权限组命名为“com.example.permission-group” 我们可以使用“使用许可”在另一个应用程序中使用它。 如果我们可以使用,我们是否可以访问该组的所有权限。

如果上述情况有误,那么我们如何利用“权限组”

2 个答案:

答案 0 :(得分:13)

标记权限组仅用于对特定类别下的一个或多个权限进行分组。来自开发者的网站http://developer.android.com/guide/topics/manifest/permission-group-element.html

Declares a name for a logical grouping of related permissions. Individual 
permission join the group through the permissionGroup attribute of the
<permission> element. Members of a group are presented together in the 
user interface.

Note that this element does not declare a permission itself, only a category in 
which permissions can be placed. See the <permission> element for element for
information on declaring permissions and assigning them to groups.

例如,消息相关的权限,例如android.permission.SEND_SMS,RECEIVE_SMS以及与消息相关的所有权限都在android.permission-group.MESSAGES下分组,以便有一个共同的图标。

来自android source https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml的AndroidManifest.xml

 <permission-group android:name="android.permission-group.MESSAGES"
    android:label="@string/permgrouplab_messages"
    android:icon="@drawable/perm_group_messages"
    android:description="@string/permgroupdesc_messages"
    android:permissionGroupFlags="personalInfo"
    android:priority="360"/>

  <!-- Allows an application to monitor incoming SMS messages, to record
     or perform processing on them. -->
<permission android:name="android.permission.RECEIVE_SMS"
    android:permissionGroup="android.permission-group.MESSAGES"
    android:protectionLevel="dangerous"
    android:label="@string/permlab_receiveSms"
    android:description="@string/permdesc_receiveSms" />

<!-- Allows an application to send SMS messages. -->
<permission android:name="android.permission.SEND_SMS"
    android:permissionGroup="android.permission-group.MESSAGES"
    android:protectionLevel="dangerous"
    android:permissionFlags="costsMoney"
    android:label="@string/permlab_sendSms"
    android:description="@string/permdesc_sendSms" />

此处,当您的应用程序使用这些权限时,android.permission-group.MESSAGES会将这些权限分类为常用图标和权限名称。

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

在示例应用程序中查看结果。这两个权限将分组为一个共同的类别。

Note the Receive and send sms categorised into a group

费用金额是因为SEND_SMS权限中的android:permissionFlags =“costsMoney”。因此,权限组仅用于对权限进行分类。它不能用于分组一个或多个权限。

答案 1 :(得分:4)

permission-group标记允许您创建group自定义权限。

  

声明相关权限的逻辑分组的名称。个人权限通过权限元素的permissionGroup属性加入组。

它基本上允许您以有序的方式组织权限。

  

权限组为一组权限定义标签(两者都是   在清单中声明的​​那些具有许可要素和那些   其他地方宣布)。它仅影响权限的分组方式   当呈现给用户时。权限组元素没有   指定属于该组的权限;它只是给了小组   一个名字。

<manifest . . . >

<permission-group android:description="string resource"
              android:icon="drawable resource"
              android:label="string resource"
              android:name="SomeGroup" />

<permission android:description="string resource"
        android:icon="drawable resource"
        android:label="string resource"
        android:name="SomePermission"
        android:permissionGroup="SomeGroup"
        android:protectionLevel=["normal" | "dangerous" | 
                                 "signature" | "signatureOrSystem"] />

    <uses-permission android:name="SomePermission" />
    . . .
    <application . . .>
        <activity android:name="com.some.activity"
                  android:permission="SomePermission"
                  . . . >
            . . .
        </activity>
    </application>
</manifest>