<permission><permission-group>的使用

282 阅读1分钟

应用场景

给一些组件增加权限授权。

比如A应用启动B应用的C界面,如果C界面需要一个权限,那么A应用必须配置相应的权限才能开启。

代码如下

B应用中权限申请如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.mypermission" >

    <!--告诉permission 属于 permission-group的-->
    <permission
        android:name="com.example.test"
        android:protectionLevel="normal"
        android:permissionGroup="com.example.test.group"
        />

    <permission-group
        android:name="com.example.test.group"
        android:protectionLevel="normal"
        />

    <permission-tree
        android:name="com.example.test.group"
        android:protectionLevel="normal" />

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/MyPermission"
        tools:targetApi="31" >
        <activity
            android:name=".TestActivity"
            android:exported="true"
            android:permission="com.example.test"
            />
        <activity
            android:name=".MainActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

A 应用中开启B应用中C界面代码如下

        findViewById<Button>(R.id.btn).setOnClickListener {
            val intent = Intent()
            intent.setClassName("com.example.mypermission","com.example.mypermission.TestActivity")
            startActivity(intent)
        }