編輯:關於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:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 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就可以直接打開數據庫
希望本文所述對大家Android程序設計有所幫助。
前言從事Android開發的小伙伴們,想必都會遇到這樣的問題。當你的應用中需要集成百度地圖、極光推送等第三方平台時,會去申請一個叫做AppKey的東西。與此同時,你得提供
支付接入流程官方文檔https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5項目的應用(AppRegi
在命令行[CMD]使用emulator.exe啟動Android模擬器兩種方式:- emulator -avd (AVD名稱)- emulator -data (鏡像文件
華為麥芒5和小米5哪個好?它們之間有什麼區別?下面小編將帶來華為麥芒5和小米5對比評測,大家一起來看看吧!華為麥芒5和小米5對比評測: 華為麥芒5介紹: