【Android】Android 多個APK資料共用

來源:互聯網
上載者:User

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就可以直接開啟資料庫.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.