David.Ko

          Follow my heart!
          posts - 100, comments - 11, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2010年7月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          公告

          大家可以通過我的QQ:398956598MSN:wjmjhfs@hotmail.com 和我聯系!!

          相冊

          積分與排名

          • 積分 - 91042
          • 排名 - 636

          最新評論

          【轉】Android 多個APK共享數據(Shared User ID)

          Posted on 2010-07-28 17:21 David.Ko 閱讀(711) 評論(0)  編輯  收藏 所屬分類: Android
          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="com.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就可以直接打開數據庫.
          主站蜘蛛池模板: 台湾省| 华容县| 元朗区| 江山市| 额济纳旗| 隆化县| 潍坊市| 玉溪市| 海淀区| 福建省| 安丘市| 金乡县| 靖西县| 古浪县| 霍州市| 黎城县| 成安县| 赤城县| 文安县| 萨迦县| 龙里县| 德州市| 广丰县| 曲周县| 武鸣县| 林口县| 永昌县| 新野县| 两当县| 泌阳县| 栾城县| 武城县| 临西县| 铜鼓县| 延长县| 三江| 丹江口市| 喜德县| 嘉峪关市| 岑溪市| 文昌市|