2013-05-18 27 views
0

我有2 Application,兩者都有一個 單獨的sharedpref具有相同的名稱。讀取其他應用程序時出現錯誤的共享偏好參考

我想從其他Applicationsharedpref閱讀value

Mycontxt = appcontext.create package context(otherapppackagename, context.mode_private); 

Shared preference otherappshpref = mycontext.getsharedpreference("prefname",context.mode_private);

有時我得到正確的reference..but次數最多的其第一個應用程序。

我嘗試了很多不同的方式,但問題仍然存在。任何人都可以請告訴我一種方法來做到這一點?

感謝

回答

0

如果你想讀的其他應用程序的數據SharedPrefrences不會是正確的

共享偏好 - 共享偏好被用來存儲用戶的喜好爲單個應用程序或跨在一個應用程序移動。它們通常是上下文可訪問的名稱/值對。路徑。

使用內容提供者

內容提供程序有助於訪問中央數據存儲或倉庫,以允許跨不同應用程序進行數據共享和數據操作。這些是在同一設備上跨應用程序訪問信息的唯一方式。

像他們是建立在Android系統內容提供商像

  • 聯繫

  • MediaStore

  • 書籤

  • 設置等。

看到該圖片內容提供商是如何工作的(圖片courtsey - http://vajjala-javapassion.blogspot.in/2011/08/getting-started-with-android-content.html

enter image description here

看到這個圖片,注意點:

  1. 內容提供商訪問到數據庫,File,Xml等不同的數據源

  2. 來自不同應用程序的活動正在使用此內容提供商。

  3. 內容提供者是數據資源和不同應用程序之間的橋樑。

+0

很好的例子很好@ –

1

Content Provider 5可以幫助您實現這一目標Example1Example2Example 3

需要Menifest到出口permision和使用數據。例如

 <provider 
     android:exported="true" 
     android:name="<content provider>" 
     android:authorities="<content provider authority>" > 
    </provider> 
+0

感謝您的回覆更多信息請參閱...我知道..內容提供商將是最好的辦法....但目前應用程序1和應用2或任何其他應用程序可能會獨立開發....並且在我們收到的規範中...每個應用程序只應通過共享偏好來共享其狀態...。這意味着如果app1想要檢查是否有任何其他應用程序正在運行......它會嘗試從應用程序2的共享pref文件中讀取狀態,這是由app2設置的,所以任何人都可以幫助我解決這個問題 – user2396314