阅读更多

由於每個應用程式都有個UID,只有帶著此UID,才能存取該UID所涵蓋的有關資料。所以如果AP-1與AP-2的UID不同,則在預設 (Default)情況下,雙方都無法讀取對方的資料。這種分而治之的方式,可以減輕駭客軟體的惡意傷害資料,提升手機的安全性。

  當手機使用者(即User)下載你(即開發者)的應用程式,在安裝(Install)時,Android 就會給予一個UID。這個UID可連結到 該應用程式的AndroidManifest.xml檔案的內容。所以User在安裝你的應用程式時,在螢幕上的視窗裡可以檢視這個 AndroidManifest.xml檔案的內容。在檢視時,用戶會看到你對應用程式的目的、權限等說明。當你接受這支程式的意圖、權限說明之 後,Android就安裝它,並給它一個UID。萬一在你的應用程式執行期間有越軌(企圖做出非權限範圍)的行為時,用戶將會得到Android的警告訊 息。

  有一些特殊情形下,兩支應用程式是可以持有一樣的UID。例如,同一位開發者撰寫的應用程式,常常需要推出新版本,這兩種版本的程式可以持有一樣的 UID, 才有權限去將舊版程式所產生的資料拷貝轉移到新版軟體裡。

  一個用戶在其使用手機的用例(UseCase)裡,通常由一個Activity啟動開始,透過Intent物件去啟動其他的Activity、 Service、ContentProvider等具有不同UID的一連串應用程式,才能滿足一個用例的目標。在傳統電腦上,UID是跟隨著「人」,一個 用戶持著一個UID就能執行一連串的應用程式,而且在預設條件下是可以互相共享資料。但是在Android裡,這一連串的應用程式是各有自己的UID,而 且可能都持著不同的UID,原則上是不能任意存取對方的資料。

  UID與AndroidManifest.xml檔案的連結除了可以保護各程式的私有資料之外,還可以禁止程式越權使用手機的各項資源。例如,開發者 在AndroidManifest.xml檔案裡表明此程式有READ_CONTACTS的授權。用戶在安裝此應用程式時,檢視過 AndroidManifest.xml的授權內涵,而且接受之。此應用程式就能合法地存取手機裡的通訊錄資料,甚至授權撥打電話、發簡訊等等。

  剛才提到過,一個用戶的用例(UseCase)裡,通常由多個不同UID的Activity、Service、ContentProvider等一連 串的應用程式所串接,才能滿足用例的目標。此時,如果它們都必須存取通訊錄的話,必須都持有相同的READ_CONTACTS授權才行。

  以上就應用程式的開發者、使用者的角度來說明Android的UID之意義和用法。至於Android如何運用Linux的進程(Process)機 制及Android的特殊管理政策,在此講義的節錄版裡,就省略之。

更多相关文章

  1. Android(安卓)Google Calendar 日曆同步舊資料
  2. Android(安卓)程式开发:(一)详解Activity —— 1.4显示“普通”对话
  3. Android(安卓)程式开发:(七)处理变化 —— 7.3 检测屏幕的方向
  4. Android(安卓)framework analysis (partI)
  5. android存取数据(基础)
  6. Delphi APP 開發入門(二)Android/iOS設定,Hello World
  7. Android(安卓)程式开发:(十一)选择控件 —— 11.1 TimePicker
  8. Android(安卓)上的 HTTP 服務相關函式 (II)
  9. android studio3.1.4更新3.2.1版本問題Unknown host 'android-mi

随机推荐

  1. android SQLite
  2. Toast
  3. Android(安卓)webview should overrideUr
  4. android 自定义progressbar style
  5. android install location
  6. Android(安卓)Dex文件结构
  7. android lrucache使用
  8. android文档笔记(1)
  9. (转)Working With Android(安卓)Contacts
  10. Android通讯