android的自定义权限还是非常简单的。我就按照应用场景来讲吧。
定义与设置自定义权限:
当b应用启动a应用的组建(可以是Activity,Service,BroadcastReceiver等)时,如果没有设置权限,那么将无法使用。
那么就需要给a应用制定的组建设置一个Permission就可以了。
第一步:得先自定义一个权限,才有自定义权限可以被使用。所以在AndroidManifest.xml文件中如下代码:同时自定义权限组和自定义权限树的用法与此相同。通常应该遵循Android的命名方案(*.permission.*)但非必须.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flyko.myapplication" >
<permission android:name="com.xzq.permission.flykozhang"
android:protectionLevel="normal"/>
<permission-group android:name="com.xzq.permission.flykozhang.group" android:protectionLevel="normal"/>
<permission-tree android:name="com.xzq.permission.flykozhang.tree" android:protectionLevel="normal"/>
</manifest>
添加权限:
双击AndroidManifest.xml文件,打开permissions选项卡,在Permissions窗口中单击Add按钮,选择Permission,然后单击ok按钮,添加一个新的Permission:
权限的特性:
Android:name权限的名称,必填属性,通常应该遵循Android的命名方案(*.permission.*)但非必须。
android:protectionLevel定义与权限相关的保护级别,必填属性。必须选择一下四项之一:normal、dangerous、signature、signatureOrSystem。
android:permissionGroup非必填属性,可以将权限放在一个组中,但对于自定义权限,尽量不要设置此属性了。
android:label非必填属性,含义你应该明白。
android:description非必填属性,含义你应该明白。
android:icon非必填属性,含义你应该明白。
第二步:自定义的权限都定义好了,那就没话说了,直接拿来用呗。
<activity
android:permission="com.xzq.permission.flykozhang"
android:name=".MainActivity"
android:theme="@style/AppBaseTheme">
</activity>
自定义权限的定义和使用都ok了,现在没话说了,就看看b应用如何调用设置了自定义权限的组建吧。
调用设置了自定义权限的组建:
第一步:在b应用中使用时,先在AndroidManifest.xml文件声明要是用的权限。和系统其他权限声明方式一样,如下代码。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flyko.myapplication" >
<uses-permission android:name="com.xzq.permission.flykozhang" />
</manifest>
第二步:在代码中启动带有自定义权限的组建。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.button1))
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClassName("com.xzq.custompermission",
"com.xzq.permission.flykozhang");
startActivity(intent);
}
});
}
}
完了。。是不是很简单~~~~