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...