通过 AndroidManifest.xml
文件可以设置高级权限,以限制访问系统的所有组件或者使用应用程序。
所有的这些请求都包含在你所需要的组件中的 android:permission属性,命名
这个权限可以控制访问此组件。
Activity 权限 (使用 <activity> 标签) 限制能够启动与 Activity 权限 相关联的组件或应用程序。此权限在 Context.startActivity() 和 Activity.startActivityForResult() 期间要经过检查;如果调用者没有请求权限,那么会为调用抛出一个安全异常( SecurityException )。
Service 权限(应用 <service> 标签)限制启动、绑定或 启动和绑定关联服务的组件或应用程序。 此权限在 Context.startService(),Context.stopService() 和 Context.bindService() 期间要经过检查;如果调用者没有请求权限,那么会为调用抛出一个安全异常( SecurityException )。
BroadcastReceiver 权限(应用 <receiver> 标签)限制能够为相关联的接收者发送广播的组件或应用程序。在 Context.sendBroadcast() 返回后此权限将被检查,同时系统设法将广播递送至相关接收者。因此,权限失败将会导致抛回给调用者一个异常; 它将不能递送到目的地。在相同方式下,可以使 Context.registerReceiver() 支持一个权限,使其控制能够递送广播至已登记节目接收者的组件或应用程序。其它的,当调用 Context.sendBroadcast() 以限制能够被允许接收广播的广播接收者对象一个权限(见下文)。
ContentProvider 权限(使用 <provider> 标签)用于限制能够访问 ContentProvider 中的数据的组件或应用程序。(Content providers 有一个重要的附加安全设施可用于它们调用被描述后的URI权限。) 不同于其它组件,它有两个不相连系的权限属性要设置:android:readPermission 用于限制能够读取提供器的组件或应用程序, android:writePermission 用于限制能够写入提供器的组件或应用程序。注意,如果一个提供者的读写权限受保护,意思是你只能从提供器中读, 而没有写权限。当你首次收回提供者(如果你没有任何权限,将会抛出一个SecurityException异常),那么权限要被 检查,并且做为你在这个提供者上的执行操作。 使用 ContentResolver.query() 请求获取读权限; 使用 ContentResolver.insert(),ContentResolver.update() 和 ContentResolver.delete() 请求获取写权限。在所有这些情况下,一个SecurityException异常从一个调用者那里抛出时不会存储请求权限结果。