【Android】Android 多個APK數據共享


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:
  package="eoe.android.demo.a1"
  android:sharedUserId="com.c">
  這個"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就可以直接打開數據庫.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM