我在我的应用程序中使用getDefaultSharedPreferences(con)
来存储首选项。现在我想在另一个应用程序中访问此共享首选项。
我使用了以下方法:
con = this.createPackageContext("com.example.preferences", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences filePref = PreferenceManager.getDefaultSharedPreferences(con);
if(filePref != null){
Toast.makeText(getApplicationContext(), "file pref not null --- ", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "file pref is null **** ", Toast.LENGTH_LONG).show();
}
Map<String,?> allkeys = filePref.getAll();
Toast.makeText(getApplicationContext(), "file pref size **** "+allkeys.size(), Toast.LENGTH_LONG).show();
for(Map.Entry<String,?> entry : allkeys.entrySet()){
Toast.makeText(getApplicationContext(), "~~~ file pref --- map values --- "+entry.getKey() + ": "+entry.getValue().toString(), Toast.LENGTH_LONG).show();
}
尝试的另一种方法是指定文件名&amp;访问它,如下;
SharedPreferences filePref = gvcon.getSharedPreferences("com.example.preferences_preferences", Context.MODE_PRIVATE);
使用此方法,我可以访问SharedPrefernce
文件,它返回文件不为null但是当我检查文件大小时,它显示0.我无法从文件中读取首选项值。
我使用了另一个应用程序的shareduserid
,以便我可以完全访问该应用程序。
什么是正确的方法?
答案 0 :(得分:0)
我不确定我是否完全理解了您的问题,但有时候这种实现方式可以帮助您跨包访问数据。
使用getSharedPreferences()
将数据存储在共享首选项中
此方法将数据存储在共享首选项
中public void dataWriter(){
String strShareValue = "Hello! this is shared data";
SharedPreferences prefs = getSharedPreferences("demopref",Context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("demostring", strShareValue);
editor.commit();
}
您可以使用此代码示例
从其他包访问该共享数据public void dataRead(){
Context con;
try {
con = createPackageContext("PACKAGE NAME THAT SHARES DATA", 0);
SharedPreferences pref = con.getSharedPreferences("demopref", Context.MODE_PRIVATE);
String dataShared = pref.getString("demostring", "No Value");
}
catch (NameNotFoundException e) {
Log.e("Not data shared", e.toString());
}
}
}