在android中每一個應用程式都是運行在自己的獨立的空間裡,應用程式之間需要共用資料
1. 可以採取 SharedPreferences, ContentProvider, Service等方式。
2. 通過Shared User id。擁有同一個User id的多個APK可以配置成運行在同一個進程中。所以預設就是可以互相存取任意資料,但也可以配置成運行成不同的進程,同樣可以訪問其他APK的資料目錄下的資料庫和檔案,就像訪問同一程式的資料一樣。比如某個公司開發了多個Android 程式,那麼可以把資料、圖片等資源集中放到APK A中去. 然後這個公司的所有APK都使用同一個User ID, 那麼所有的資源都可以從APK A中讀取。
公司中不同的APK需要共用資源怎麼辦呢?下面通過代碼進行解析:
設定第一個應用程式為shareuserid_a,其中的AndroidManifest.xml檔代碼如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.a" android:versionCode="1" android:versionName="1.0" android:sharedUserId="com.example.id" > .......第二個應用程式為shareuserid_b,其中的AndroidManifest.xml檔代碼如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.b" android:versionCode="1" android:versionName="1.0" android:sharedUserId="com. example.id" > .....兩個應用程式共用一個userid,在b中需要訪問a代碼如下:
Context ct=this.createPackageContext("com.example.a", Context.CONTEXT_IGNORE_SECURITY);
這樣獲取到a的context,那麼即可透過a的context 獲取其中相關的資源。
如何設定APK是執行在同一個行程中?
Ans: To make them actually run in the same process, you need to use android:process with the same process name
沒有留言:
不接受新意見。