http://blog.csdn.net/feng88724/article/details/6409313
http://byandby.iteye.com/blog/1028034
定义的Activity的Manifest中
<permission-group
android:name="com.adb.permission-group.custom"
android:description="@string/hello_world"
android:label="test for" >
</permission-group>
<permission
android:name="com.abc.permission.startAct"
android:description="@string/hello_world"
android:label="test to start permisson"
android:permissionGroup="com.adb.permission-group.custom"
android:protectionLevel="normal" >
</permission>
...
<activity
android:name=".MainActivity1"
android:label="@string/app_name"
android:permission="com.abc.permission.startAct" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
启动的activity 工程Manifest 使用 permission
<uses-permission android:name="com.abc.permission.startAct" />
说明:
1. permission 中android:permissionGroup可以不加
2. android:protectionLevel 必须有 定义权限的风险级别,必须是以下值之一:
notmal、 dangerous、signature、signatureOrSystem
normal表示权限是低风险的,不会对系统、用户或其他应用程序造成危害。
signature 同一签名可访问
signatureOrSystem 同一签名或者系统应用
3.利用可限制访问 activity 或者 Receiver 或者 provider (记得有次面试会问怎么限制provider的访问者 这个是一个方法)
如:
<provider
android:name="com.android.launcher2.LauncherProvider"
android:authorities="com.android.launcher5.settings"
android:exported="true"
android:readPermission="com.android.launcher.permission.READ_SETTINGS"
android:writePermission="com.android.launcher.permission.WRITE_SETTINGS" />
android:exported="true"是 是否 可以由外部程序访问
如:
<receiver
android:name="com.android.launcher2.PreloadReceiver"
android:permission="com.android.launcher.permission.PRELOAD_WORKSPACE" >
<intent-filter>
<action android:name="com.android.launcher.action.PRELOAD_WORKSPACE" />
</intent-filter>
</receiver>