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>