您的位置:

Permission缩写详解

一、基本概念

Permission是Android系统中的一个非常重要的概念,用于控制应用程序的安全访问。系统会对应用程序进行权限管理,只有在获得相应的权限之后,应用程序才能够访问相关的资源或者进行相应的操作。

在AndroidManifest.xml文件中,声明权限就是通过Permission来实现的,而在Java代码中判断是否有权限的方法,则是利用PackageManager中的checkPermission()方法来实现的。

二、权限分类

在Android系统中,权限可以分为两种类型,分别是Normal Permission和Dangerous Permission。

1. Normal Permission

Normal Permission比较常规,涉及的权限都是一些低风险的行为,例如访问网络、控制闪光灯等等,所有应用程序默认都授权访问这些权限。当然,如果应用程序不需要这些权限,也可以在AndroidManifest.xml中声明禁止访问这些权限。

2. Dangerous Permission

Dangerous Permission包括了许多敏感信息和操作,例如读取联系人、访问通话记录、获取位置信息等等,这些权限都需要经过用户同意之后才可以访问。当应用程序需要这些权限时,系统会弹出一个授权页面,询问用户是否同意,这需要程序员在Java代码中编写相应的授权逻辑。

三、权限名称缩写

在Android系统中,权限名称非常长,因此Android引入了一些缩写来方便开发者进行代码编写。权限缩写的格式为"android.permission.PERMISSION_NAME"。

常见权限名称和缩写


权限名称                         权限缩写
android.permission.INTERNET       网络访问
android.permission.SEND_SMS      发送短信
android.permission.CALL_PHONE    拨打电话
android.permission.READ_PHONE_STATE  读取手机状态
android.permission.WRITE_EXTERNAL_STORAGE   写入外部存储
android.permission.READ_CONTACTS  读取联系人
android.permission.RECORD_AUDIO  录音
android.permission.ACCESS_FINE_LOCATION  访问GPS(全球定位系统)

四、权限的使用

1. AndroidManifest.xml中声明权限

在AndroidManifest.xml中,可以声明需要使用的权限,这样Android系统就会在用户安装应用程序时向用户提示需要使用哪些权限。声明权限的方式为:


<manifest>
  <uses-permission android:name="android.permission.PERMISSION_NAME" />
  <application>
    ...
  </application>
</manifest>

其中,<uses-permission>标签用于声明使用的权限。例如,下面的代码声明了读取联系人信息的权限:


<manifest>
  <uses-permission android:name="android.permission.READ_CONTACTS" />
  <application>
    ...
  </application>
</manifest>

2. Java代码中获取和判断权限

在Java代码中,可以通过PackageManager类的checkPermission()方法来判断该应用程序是否具有某一个权限。如果用户尚未授权该应用程序访问该权限,则该方法将返回PackageManager.PERMISSION_DENIED,否则将返回PackageManager.PERMISSION_GRANTED。

例如,下面的代码判断是否具有读取联系人的权限:


if (context.checkPermission(
        Manifest.permission.READ_CONTACTS,
        Process.myPid(),
        Process.myUid())
    == PackageManager.PERMISSION_GRANTED) {
  // 已授权
} else {
  // 未授权
}

五、总结

Android系统中的权限是保证应用程序安全的一个非常重要的机制。在应用程序的开发中,需要确保只授权具备必要权限的应用程序,避免授权过多、不必要的权限。