我們經常在乙個activity中去start另乙個activity,或者與另乙個acitivity的結果進行互動(startactivityforresult)。但有沒有想過可能會出現的permission問題呢?如果你遇到了permission denial的exception,那麼你需要讀讀這篇文章啦。
如果上述調節,滿足一條,一般即可(與其他幾條不發生強制設定衝突),否則,將會得到permission denial的exception而導致force close。
現在,我來解釋一下uid機制
1這種方式保護了第三方軟體公司的利益於資料安全。
講到這裡,大家應該明白uid機制了吧。^_
舉例說明一下。
系統中所有使用android.uid.system作為共享uid的apk,都會首先在manifest節點中增加android:shareduserid="android.uid.system",然後在android.mk中增加local_certificate := platform。可以參見settings等
系統中所有使用android.uid.shared作為共享uid的apk,都會在manifest節點中增加android:shareduserid="android.uid.shared",然後在android.mk中增加local_certificate := shared。可以參見launcher等
系統中所有使用android.media作為共享uid的apk,都會在manifest節點中增加android:shareduserid="android.media",然後在android.mk中增加local_certificate := media。可以參見gallery等。
另外,應用建立的任何檔案都會被賦予應用的使用者標識,並且正常情況下不能被其他包訪問。當通過getsharedpreferences(string,int)、openfileoutput(string、int)或者openorcreate database(string、int、sqlitedatabase.curso***ctory)建立乙個新檔案時,開發者可以同時或分別使用mode_world_readable和mode_world_riteable標誌允許其他包讀/寫此檔案。當設定了這些標誌後,這個檔案仍然屬於自己的應用程式,但是它的全域性讀/寫和讀/寫許可權已經設定,所以其他任何應用程式可以看到它。
關於簽名:
build/target/product/security目錄中有四組預設簽名供android.mk在編譯apk使用:
1、testkey:普通apk,預設情況下使用。
2、platform:該apk完成一些系統的核心功能。經過對系統中存在的資料夾的訪問測試,這種方式編譯出來的apk所在程序的uid為system。
3、shared:該apk需要和home/contacts程序共享資料。
4、media:該apk是media/download系統中的一環。
應用程式的android.mk中有乙個local_certificate欄位,由它指定用哪個key簽名,未指定的預設用testkey.
uid 類似與標定 pc機使用者的許可權 許可權高 享有的資源就多
android:process
Android中UID機制和共享程序
我們經常在乙個activity中去start另乙個activity,或者與另乙個acitivity的結果進行互動 startactivityforresult 但有沒有想過可能會出現的permission問題呢?如果你遇到了permission denial的exception,那麼你需要讀讀這篇文...
Android安裝應用失敗UID 和 PID
參考 安裝任意第三方的乙個apk,恢復出廠設定,再次安裝相同的apk,提示安裝失敗,通過列印log發現,安裝失敗的錯誤反回值是24,public static final int install failed uid changed 24 進一步跟蹤發現,在恢復出廠設定後 data data目錄下的...
Android與Linux中從uid到使用者名稱的對映
整理自 android 從uid到使用者名稱的對映分析 理解 etc passwd 檔案 etc passwd 檔案是系統的主要檔案之一。該檔案中包含了所有使用者登入名清單 為所有使用者指定了主目錄 在登入時使用的 shell 程式名稱等。該檔案還儲存了使用者口令 給每個使用者提供系統識別號。etc...