一.概述
首先说一下为什么需要使用权限,主要就是防止其他程序随便调用。
一般我们调用系统的功能都会添加对应的权限,比如打电话,我们会添加如下的权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
今天我们来看看怎么自定义权限。
二.实现
首先我们需要两个工程,在这两个工程里面分别新建一个Activity,在A工程里面启动B工程里面的Activity。
1.添加自定义权限
<permission android:name="com.lxn.startSecond"
android:protectionLevel="normal"
/>
这两个参数是必须的,含意见下表:
然后在activity中使用我们自定义的权限:
<activity
android:name=".SecondActivity"
android:permission="com.lxn.startSecond"
android:label="@string/title_activity_second"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="com.lxn.start"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
这里要注意亮点:
- 添加权限使用android:permission
- 因为我们要从外部启动这个Activity,所以action和category必须指定
2.如何启动
接下来我们回到A工程中,去启动B工程中定义好权限的Activity.
public void start(View view){
//隐式启动
Intent intent = new Intent("com.lxn.start");
//显式启动
// intent.setClassName("com.example.dialogdemo","com.example.dialogdemo.SecondActivity");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
}
这个时候要想启动B工程中的Activity,我们就必须要添加权限了,不然就无法启动
<uses-permission android:name="com.lxn.startSecond" />