'What is the use of <permission-group> in android?
From android documentation, Its clear that Using "permission-group" we can create a permission group. Using "permission" element in android manifest file, we can define a permission. This permission can be added to permission-group.
if we name this permission-group as "com.example.permission-group" can we use it in another application using "uses-permission". If we can use, whether can we access all the permissions of this group.
If the above case is wrong, Then how can we make use of "permission-group"
Solution 1:[1]
The tag permission-group is just used to group one or more permissions under a particular category. From the developer's site 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.
For example, the messages related permissions, say android.permission.SEND_SMS, RECEIVE_SMS and all the permissions related to messages are grouped under android.permission-group.MESSAGES to have a common icon.
From AndroidManifest.xml of android source https://github.com/android/platform_frameworks_base/blob/master/core/res/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" />
Here, the android.permission-group.MESSAGES categorises these permissions under a common icon and name in permissions when your applications uses these permissions.
Give
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
in a sample application to see the result. Those two permissions will be grouped into a common category.
The costs money is because of the android:permissionFlags="costsMoney" in SEND_SMS permission. Hence permission-group is only used to categorise the permissions. It cannot be used as in to group one or more permissions.
Solution 2:[2]
The permission-group
tag allows you to create a group
of custom permissions.
Declares a name for a logical grouping of related permissions. Individual permission join the group through the permissionGroup attribute of the permission element.
It basically allows you to organize your permissions in an orderly fashion.
And permission-group defines a label for a set of permissions (both those declared in the manifest with permission elements and those declared elsewhere). It affects only how the permissions are grouped when presented to the user. The permission-group element does not specify which permissions belong to the group; it just gives the group a name.
<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>
Solution 3:[3]
dangerous authorizations are organized into groups related to the capabilities or functionality of a device.
Authorizations are divided into nine groups, allowing for group-level authorization requests to be processed.
A single group of authorizations corresponds to multiple authorizations declarations on the manifest.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | user936414 |
Solution 2 | David Freitag |
Solution 3 | Miloud Mokkedem |