WEB开发网
开发学院手机开发Android 开发 Android 开发指南-框架主题-安全和许可 阅读

Android 开发指南-框架主题-安全和许可

 2010-03-31 05:27:00 来源:WEB开发网   
核心提示:providers有一套而外的安全机制叫做URI permissions,这些在稍后讨论)不同于其它的Components,Android 开发指南-框架主题-安全和许可(6),这里有两种不同的permission属性可以设置: android:readPermission 用于限制谁可以读取provider中的数据,
providers有一套而外的安全机制叫做URI permissions,这些在稍后讨论)不同于其它的Components,这里有两种不同的permission属性可以设置: android:readPermission 用于限制谁可以读取provider中的数据,而 android:writePermission 用于限制谁才可以向provider中写入数据。需要注意的是如果provider同时被读写许可,如果这时只有写许可并不意味着你就可以读取 provider中的数据了。当你第一次获取provider的时候就要进行权限检查(如果你没有任何permission,则会抛出 SecurityException), 并且这时你对provider执行了某些操作。当使用ContentResolver.query()时需要读权限,而当使用ContentResolver.insert(), ContentResolver.update(), ContentResolver.delete()时需要写权限。在所有这些情况下,没有所需的permission将会导致SecurityException被抛出。

发送广播时 实施许可Enforcing Permissions when Sending Broadcasts

除了之前说过的Permission(用于限制谁才可以发送广播给相应的BroadcastReceiver),你还可以在发送广播的时候指定一个permission。在调用Context.sendBroadcast()的时候使用一个permission string,你就可以要求receiver的宿主程序必须有相应的permission。

值得注意的是Receiver和broadcaster都可以要求permission。当这种情况发生时,这两种permission检查都需要通过后才会将相应的intent发送给相关的目的地。

其他权限实施Other Permission Enforcement

在调用service的过程中可以设置任意细化的许可。这是通过Context.checkCallingPermission()方法来完成的。呼叫的时候使用一个想得到的permission string,并且当该权限获批的时候可以返回给呼叫方一个Integer(没有获批也会返回一个Integer)。需要注意的是这种情况只能发生在来自另一个进程的呼叫,通常是一个service发布的IDL接口或者是其他方式提供给其他的进程。

Android提供了很多其他的方式用于检查permissions。如果你有另一个进程的pid,你就可以通过Context.checkPermission(String, int, int)去针对那个pid去检查permission。如果你有另一个应用程序的package name,你可以直接用PackageManager的方法PackageManager.checkPermission(String, String)来确定该package是否已经拥有了相应的权限。

URI许可URI Permissions

到目前为止我们讨论的标准的permission系统对于内容 提供器(content

上一页  1 2 3 4 5 6 7  下一页

Tags:Android 开发指南 框架

编辑录入:coldstar [复制链接] [打 印]
赞助商链接