Android开发指南 框架主题 安全和许可
2010-06-17 03:18:00 来源:WEB开发网一个特定的许可可能会在你的程序操作过程中的很多地方都被实施:
* 当系统有来电的时候,用以阻止程序执行其它功能。
* 当启动一个活动(activity)的时候,会阻止应用程序启动其它应用程序的Acitivity。
* 在发送和接收广播的时候,去控制谁可以接收你的广播或谁可以发送广播给你。
* 当进入并操作一个内容提供器(content provider)的时候
* 当绑定或起动一个服务(service)的时候
声明和实施许可Declaring and Enforcing Permissions
为了实施你自己的permissions,你必须首先在AndroidManifest.xml文件中声明该permissions.通常我们通过使用一到多个< permission > tag来进行声明。
例如,一个应用程序想要控制谁能启动它的活动,可以为该操作声明许可如下:
< manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.me.app.myapp" >
< permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY"
android:label="@string/permlab_deadlyActivity"
android:description="@string/permdesc_deadlyActivity"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous" / >
< /manifest >
这里< protectionLevel >属性是必需的,通过声明该属性,我们就可以告知系统如何去通知用户哪些应用程序需要这个许可,或者谁可以拥有该许可。具体请参看链接的文档。
< permissionGroup >属性是可选的,只是用于帮助系统显示许可permission 给用户(实际是告知系统该许可是属于哪个许可组permission group的)。你通常会选择使用标准的system group来设定该属性,或者更为少见的用你自己定义的group。推荐使用一个已经存在的group,因为这样UI给用户显示许可的时候会更简单。
需要注意的是标签(label)和描述(description)都是需要为许可提供的。这些都是字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息 (android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生。下面是一个描述CALL_PHONE
更多精彩
赞助商链接