在 Android 中,你可以通过以下步骤添加自定义权限:
-
在 Android 项目的清单文件(AndroidManifest.xml)中,找到 标签,并在标签内部添加一个 元素。该元素用于定义自定义权限的名称、保护级别和其他属性。例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <permission android:name="com.example.myapp.CUSTOM_PERMISSION" android:label="Custom Permission" android:description="This is a custom permission." android:protectionLevel="dangerous" /> <!-- 其他组件声明 --> </manifest>
-
需要授予或检查自定义权限的组件(如活动、服务、接收器等)中,使用 元素声明对自定义权限的依赖。例如:
<!-- 自定义权限声明 --> <permission android:name="com.example.myapp.CUSTOM_PERMISSION" android:protectionLevel="dangerous" /> <!-- 组件声明 --> <application> <activity android:name=".MainActivity" android:label="Main Activity"> <!-- 使用自定义权限 --> <uses-permission android:name="com.example.myapp.CUSTOM_PERMISSION" /> </activity> </application>
-
在代码中,你可以使用 Context 的方法来检查应用是否具有自定义权限,例如:
if (ContextCompat.checkSelfPermission(this, "com.example.myapp.CUSTOM_PERMISSION") == PackageManager.PERMISSION_GRANTED) { // 应用已经被授予自定义权限 } else { // 应用没有被授予自定义权限 }
android:protectionLevel 是在 Android 清单文件中 元素中用于指定权限保护级别的属性。它决定了应用程序访问敏感资源或执行敏感操作时对权限的要求和限制。
android:protectionLevel 属性可以设置以下值之一:
- normal:默认值,表示权限不属于危险权限,应用程序在安装时自动被授予该权限。
- dangerous:表示权限属于危险权限,应用程序需要在运行时动态请求用户授权才能使用该权限。这些权限可能会涉及用户隐私或对设备功能的重要访问,例如读取联系人、访问摄像头等。
- signature:表示权限只能由具有相同证书签名的应用程序使用。这种权限限制了只有特定的应用程序才能使用该权限,通常用于共享权限给同一开发者的多个应用程序。
- signatureOrSystem:类似于 signature,但还允许系统应用程序使用该权限。只有系统应用程序或由系统签名的应用程序才能使用该权限。