我一直在開發一個Android應用程序,它通過sharedpreference文件與安裝在設備上的其他應用程序進行交互。不同應用程序之間的Android共享首選項
該文件創建爲MODE.WORLD_READABLE,每個已安裝的應用程序都有自己的文件,並具有通用的已定義名稱和屬性(該特定屬性的值有哪些更改)。
例如,AppA和AppB應該爲每個應用程序分配一個名爲「app_shared_file.xml」的共享文件,其中包含屬性「property_shared_file」。
從我的應用程序我想先訪問此文件並閱讀該屬性值,並根據我想要創建/更新我的結果。
不過,我在實現這個過程中遇到了一些問題。在Android文檔我看到:
檢索並按住喜好文件的內容「姓名」, 返回SharedPreferences,通過它可以檢索和 修改其值。 SharedPreferences對象 只有一個實例返回給同名的任何呼叫者,這意味着他們將在製作後立即看到 彼此的編輯。
閱讀其他應用程序共享偏好文件後,當我嘗試創建/更新我的系統而不是編輯我的系統時,使用了我之前閱讀的那個。如果恰恰相反,我開始通過更新我的內容並在稍後閱讀另一個應用程序 - 而不是閱讀另一個,被訪問的是我的。
有什麼想法?
我使用用於讀取共享PREF的代碼是[其中的packageName是其他應用pckg]:
Context con = context.createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences pref = con.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_WORLD_READABLE);
pref.getBoolean(SHARED_PREF_PROP, false);
我使用在應用程序共享PREF編寫的代碼是:
SharedPreferences prefs= getSharedPreferences(SHARED_PREF_NAME, context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(SHARED_PREF_PROP, value);
editor.commit();
在此先感謝。
是的,有兩種不同的應用程序,每個應用程序都有自己的shared_prefs文件夾中存儲的共享首選項文件。 是的,我通過PackageManager知道其他應用程序的包名,但我無法知道哪個活動/類將處理它。 我已經看到了這個鏈接,這裏的問題是訪問兩個不同的共享前綴具有相同的名稱 - 我自己的和其他應用程序。打開一個後,當我嘗試打開另一個參考點時,最初打開的參考點不是作爲上下文發送的參考點。 – user1683087