2013-05-18 28 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