android多apk共享私有檔案

2021-08-25 16:09:00 字數 2094 閱讀 8578

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中的**: 

context friendcontext = this.createpackagecontext( 

"com.android.demo.a1", 

context.context_ignore_security); 

通過a的package name 就可以得到a的 packagecontext 

通過這個context就可以直接開啟資料庫.

例程:dealfile.apk

android:shareduserid="com.my.test.file"

public class dealfile extends activity

public string readsettings(context context) catch (exception e) finally catch (ioexception e)

}return data;

}public void writesettings(context context, string data) catch (exception e) finally catch (ioexception e) }}

}例程2

dealfile2,apk

android:shareduserid="com.my.test.file">

public class dealfile2 extends activity catch (namenotfoundexception e)

}public string readsettings(context context) catch (exception e) finally catch (ioexception e)

}return data;

}public void writesettings(context context, string data) catch (exception e) finally catch (ioexception e) }}

}這樣dealfile2,apk

就可以讀寫dealfile.apk中的檔案了

apk與apk 資料共享詳解

案例 apk1 與apk2 資料共享 1 新建儲存類 2 在activity中呼叫 apk2 訪問 經驗總結 注意問題點 android 關於sharedpreferences,createpackagecontext生成的context例項快取清除問題 我的主apk為 a,呼叫的 apk為 b1,...

Android 靜默更新apk

內容 關於以上兩個任務,網上已經有很多例項以及文字說明了,這裡只是記錄一下自己參考他們的部落格後而寫的 demo。基本上參考上面兩個鏈結就能完全實現改功能了。3.0version new viersiondescription info 注意新增許可權 3.靜默安裝 pm install r apx...

Android發布APK詳解

一 android studio發布apk 1.android studio選單build generate signed apk 2.若存在金鑰可選擇存在的,不存在金鑰可建立金鑰 key store path 金鑰庫檔案的位址 password confirm 金鑰庫的密碼 alias 金鑰名稱 ...