安卓:其他应用
回答
假设偏好是WORLD_READABLE,这可能工作:
final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();
Context myContext = createPackageContext("com.example",
Context.MODE_WORLD_WRITEABLE); // where com.example is the owning app containing the preferences
SharedPreferences testPrefs = myContext.getSharedPreferences
("test_prefs", Context.MODE_WORLD_READABLE);
Map<String, ?> items = testPrefs .getAll();
for(String s : items.keySet()){
//do somthing like String value= items.get(s).toString());
}
它可以工作,如果我们想要阅读其他应用程序/包装/工艺亲景值。 但也有一些是错误的jkhouw1的回答是:
Context myContext = createPackageContext("com.example",
Context.MODE_WORLD_WRITEABLE);
它应该是:
Context myContext = createPackageContext("com.example",
Context.CONTEXT_IGNORE_SECURITY);
虽然CONTEXT_IGNORE_SECURITY和MODE_WORLD_WRITEABLE具有相同的值 “INT 2” 可言,感谢这个问题和答案。
好吧!在应用程序1中使用此代码(包名称为“com.sharedpref1”)以使用共享首选项存储数据。
SharedPreferences prefs = getSharedPreferences("demopref",
Context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("demostring", strShareValue);
editor.commit();
并使用应用2中得到应用中1.共享偏好数据的代码,我们可以得到它,因为我们在应用1使用MODE_WORLD_READABLE:
try {
con = createPackageContext("com.sharedpref1", 0);
SharedPreferences pref = con.getSharedPreferences(
"demopref", Context.MODE_PRIVATE);
String data = pref.getString("demostring", "No Value");
displaySharedValue.setText(data);
} catch (NameNotFoundException e) {
Log.e("Not data shared", e.toString());
}
更多信息,请访问以下网址: http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html
对不起,看起来像意外地我点击了你的答案中的“反对票”,现在不能撤销这个,除非你编辑你的答复。如果可以的话,请至少编辑一下,以便我可以对它进行反对投票。再次,对于我的错误,随机意外点击感到抱歉。 – gregko 2013-06-13 13:37:32
这是一个很好的代码: 在我的情况下,起初我没有使用从第一个应用程序包名称的条目。但现在它工作。在App1中,我没有使用“Context.MODE_WORLD_READABLE”,而是在两个AndroidManifest.xml应用程序中与“android:sharedUserId”和“android:sharedUserLabel”结合使用了“Context.MODE_PRIVATE”。我使用这种组合的原因是,我只想要我自己开发的应用程序的访问权限。通过“MODE_WORLD_READABLE”,还可以访问其他应用程序,这是我不需要的。也许这个信息对一些人也是有用的。 – KingAlex1985 2014-06-17 09:57:36
这是一个很好的答案,并且@ KingAlex1985除此之外还允许我的付费应用程序读取它的免费兄弟的共享首选项,而不会将它们暴露给全世界。同样适用于'PreferenceManager.getDefaultSharedPreferences(con)'。我向两个应用程序添加了“android:sharedUserId”和“android:sharedUserLabel”。 – 2015-02-01 00:37:55
此外,你必须在两个应用程序的清单文件中添加相同的android:sharedUserId。
不幸的是,现在的文档甚至不解释MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,而不是说:
这个常量是在API水平贬值17 创建世界可读的文件是很危险的,容易造成安全漏洞应用。强烈不鼓励;相反,....等
由于折旧,实现与sharedpreferences应用程序之间的文件共享可能是太冒险了,虽然它很简单。我不是太关心从游戏应用程序,我只是希望能够从一个应用转移字符到另一个MODE_WORLD_READABLE模式的安全漏洞。这太糟糕了,他们贬低了这两种共享模式。
很简单检索店共享偏好一个应用程序的数据到另一个应用程序。
第1步:添加同一android:sharedUserId="android.uid.shared"
在这两个应用程序的清单文件。
第2步:储值应用1
SharedPreferences preferences = context.getSharedPreferences("token_id", Context.MODE_WORLD_READABLE);
Editor editor = preferences.edit();
editor.putString("shared_token", encryptedValue);
Log.e("aaa *** shared_token : ", encryptedValue.toString());
editor.commit();
第3步:获得值从应用2
Context con = null;
try {
con = createPackageContext("application2 package name", Context.CONTEXT_IGNORE_SECURITY);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
try {
if (con != null) {
SharedPreferences pref = con.getSharedPreferences(
"token_id", Context.MODE_WORLD_READABLE);
String data = pref.getString("shared_token", "");
Log.d("msg", "Other App Data: " + data);
} else {
Log.d("msg", "Other App Data: Context null");
}
} catch (Exception e) {
e.printStackTrace();
}
- 1. 安卓应用检测其他活动
- 2. 安卓:从其他活动
- 3. 安卓:包括XML到其他XML
- 4. 安卓应用开发
- 5. 安卓:每个应用
- 6. 安卓:已购买应用
- 7. 迷你应用安卓samsung
- 8. debbugin安卓应用提示
- 9. 安卓应用程序:processDebugGoogleServices
- 10. 短信安卓应用
- 11. 安卓应用闪光灯
- 12. 安全注册WordPress的安卓应用
- 13. 安卓应用程序分组根据其作用(功能)
- 14. 安卓:在模拟器而不是在其他一些设备
- 15. 安卓:在其他元素之上的ListView
- 16. 安卓级呼叫其他活动按钮
- 17. 如何将参数传递给其他标签(安卓)
- 18. 安卓:用DefaultHttpClient
- 19. 用钥匙签名安卓应用
- 20. 安卓相机使用应用程序
- 21. 安装向导安装其他应用程序
- 22. HTTP安卓响应实践
- 23. 安卓:用枚举值可以被翻译成其他语言环境
- 24. 利用安卓引擎的旧/新小工具驱动其他电子设备
- 25. 使用卓越API为其他人(客户)安排游乐设施
- 26. 谷歌翻译API与安卓应用
- 27. 安卓:计算时间从应用
- 28. 安卓:为应用小部件
- 29. 安卓应用:transformClassesWithMultidexlistForDebug重复ZIP条目
- 30. 安卓应用内结算问题
你做到这一点在其他应用程序(拥有优先的应用程序)。从你的问题来看,你似乎没有权限访问,因为如果你这样做了,你会知道可用的密钥。但是你可以用类似于mode_world_readable的方式来完成它。它确实是一种非常糟糕的做事方式,如果你想共享数据,你应该遵循普通软件的建议 – jkhouw1 2011-05-17 13:12:59
应用程序需要有模式WORLD_READABLE - 也许这就是你的意思和误输入它? WOLRD_WRITABLE意味着任何人都可以写信给它。 – jkhouw1 2011-05-18 09:27:10
我试过了,但我无法读取其他应用程序的值 – 2013-03-09 20:26:53