在传统计算机上,UID是跟随着「人」(例如计算机的使用者或用户)。Android里的UID是跟随着「软件」(例如Android应用程序)。
由于每个应用程序都有个UID,只有带着此UID,才能存取该UID所涵盖的有关资料。所以如果AP-1与AP-2的UID不同,则在预设(Default)情况下,双方都无法读取对方的数据。这种分而治之的方式,可以减轻黑客软件的恶意伤害数据,提升手机的安全性。
当手机使用者(即User)下载你(即开发者)的应用程序,在安装(Install)时,Android就会给予一个UID。这个UID可连结到该应用程序的 AndroidManifest.xml档案的内容。所以User在安装你的应用程序时,在屏幕上的窗口里可以检视这个AndroidManifest.xml档案的内容。在检视时,用户会看到你对应用程序的目的、权限等说明。当你接受这支程序的意图、权限说明之后,Android就安装它,并给它一个UID。万一在你的应用程序执行期间有越轨(企图做出非权限范围)的行为时,用户将会得到Android的警告讯息。
有一些特殊情形下,两支应用程序是可以持有一样的UID。例如,同一位开发者撰写的应用程序,常常需要推出新版本,这两种版本的程序可以持有一样的UID, 才有权限去将旧版程序所产生的数据拷贝转移到新版软件里。
一个用户在其使用手机的用例(Use Case)里,通常由一个Activity启动开始,透过Intent对象去启动其它的Activity、Service、ContentProvider等具有不同UID的一连串应用程序,才能满足一个用例的目标。在传统计算机上,UID是跟随着「人」,一个用户持着一个UID就能执行一连串的应用程序,而且在预设条件下是可以互相共享数据。但是在Android里,这一连串的应用程序是各有自己的UID,而且可能都持着不同的UID,原则上是不能任意存取对方的资料。
UID与AndroidManifest.xml档案的连结除了可以保护各程序的私有数据之外,还可以禁止程序越权使用手机的各项资源。例如,开发者在AndroidManifest.xml档案里表明此程序有READ_CONTACTS的授权。用户在安装此应用程序时,检视过AndroidManifest.xml的授权内涵,而且接受之。此应用程序就能合法地存取手机里的通讯簿数据,甚至授权拨打电话、发简讯等等。
刚才提到过,一个用户的用例(Use Case)里,通常由多个不同UID的Activity、Service、ContentProvider等一连串的应用程序所串接,才能满足用例的目标。此时,如果它们都必须存取通讯簿的话,必须都持有相同的READ_CONTACTS授权才行。
以上就应用程序的开发者、使用者的角度来说明Android的UID之意义和用法

更多相关文章

  1. Android存在程序缺陷误发短信 Google形象受损
  2. 开发Android程序使用USB连接真机调试时找不到设备的解决办法
  3. 构建 Android 应用程序一定要绕过的 30 个坑
  4. 如何利用Eclipse运行android程序
  5. Android UI学习 - 用户通知
  6. 【移动开发】Android应用程序中实用的代码框架(一)
  7. [置顶] Android底层库和程序

随机推荐

  1. Android 彻底征服 ListView 二 具有弹性
  2. PhoneGap Developer App 安卓(android)调
  3. android - 测试工具Monkey
  4. Android 音乐播放器
  5. 2011.04.15——— android listView带che
  6. Android 自己制作的相册--效果还不错哦
  7. Android 飞行模式的设置(打开/关闭飞行模
  8. android的简单入门学习
  9. Appium Android 元素定位方法 原生+H5
  10. Android消息循环机制