我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();
}
另一种尝试的方法是指定文件名并访问它,如下所示;
SharedPreferences filePref = gvcon.getSharedPreferences("com.example.preferences_preferences", Context.MODE_PRIVATE);
使用这种方法,我可以访问SharedPrefernce
文件,它返回文件不为空,但是当我检查文件大小时,它显示为 0。我无法从文件中读取首选项值。我使用shareduserid
了另一个应用程序,以便完全访问该应用程序。解决这个问题的正确方法是什么?