Android sharedUserId資料許可權

2021-08-27 13:44:11 字數 1156 閱讀 1907

android給每個apk程序分配乙個單獨的使用者空間,其manifest中的userid就是對應乙個linux使用者

(android 系統是基於linux)的.

所以不同apk(使用者)間互相訪問資料預設是禁止的.

但是它也提供了2種apk間共享資料的形式:

1. share preference. / content provider

apk可以指定介面和資料給任何其他apk讀取. 需要自己實現介面和share的資料.

本文對於這個不做詳細解釋

2. shared user id

通過shared user id,擁有同乙個user id的多個apk可以配置成執行在同乙個程序中.所以預設就是

可以互相訪問任意資料. 也可以配置成執行成不同的程序, 同時可以訪問其他apk的資料目錄下的

資料庫和檔案.就像訪問本程式的資料一樣.

比如某個公司開發了多個android 程式, 那麼可以把資料,等資源集中放到apk  a中去. 然後

這個公司的所有apk都使用同乙個user id, 那麼所有的資源都可以從apk a中讀取.

舉個例子:

apk a 和apk b 都是c公司的產品,那麼如果使用者從apk a中登陸成功.那麼開啟apk b的時候就不用

再次登陸. 具體實現就是 a和b設定成同乙個user id:

* 在2個apk的androidmanifest.xml 配置user id:

這個"com.c" 就是user id, 然後packagename apk a就是上面的內容,  apk b可能

是"com.android.demo.b1" 這個沒有限制

這個設定好之後, apk b就可以像開啟本地資料庫那樣 開啟apk a中的資料庫了.

apk a把登陸資訊存放在a的資料目錄下面. apk b每次啟動的時候讀取apk a下面的資料庫

判斷是否已經登陸:

apk b中的**:

friendcontext = this.createpackagecontext(

"com.android.demo.a1",

context.context_ignore_security);

通過a的package name 就可以得到a的 packagecontext

通過這個context就可以直接開啟資料庫

Android sharedUserId資料許可權

android給每個apk程序分配乙個單獨的使用者空間,其manifest中的userid就是對應乙個linux使用者 android 系統是基於linux 的.所以不同apk 使用者 間互相訪問資料預設是禁止的.但是它也提供了2種apk間共享資料的形式 1.share preference.con...

Android sharedUserId資料許可權

android給每個apk程序分配乙個單獨的使用者空間,其manifest中的userid就是對應乙個linux使用者 android 系統是基於linux 的.所以不同apk 使用者 間互相訪問資料預設是禁止的.但是它也提供了2種apk間共享資料的形式 1.share preference.con...

Android sharedUserId資料許可權

字型大小訂閱 android給每個apk程序分配乙個單獨的使用者空間,其manifest中的userid就是對應乙個linux使用者 android 系統是基於linux 的.所以不同apk 使用者 間互相訪問資料預設是禁止的.但是它也提供了2種apk間共享資料的形式 1.share prefere...