あるアプリケーションで作成された共有設定値に他のアプリケーションからアクセスしようとしていますが、タスク マネージャーからアプリを閉じた場合にのみデータを取得できます。それ以外の場合、変更は反映されません。
最初のアクティビティ:
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// get The User name and Password
String userName = editTextUserName.getText().toString();
String password = editTextPassword.getText().toString();
sharedPreferences = getSharedPreferences(PREFS_READ_WRITE, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
Editor prefsPrivateEditor = sharedPreferences.edit();
prefsPrivateEditor.putString(KEY_READ_WRITE, "test");
prefsPrivateEditor.commit();
To clear:
clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sharedPreferences = getSharedPreferences(PREFS_READ_WRITE, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
Editor prefsPrivateEditor = sharedPreferences.edit();
prefsPrivateEditor.clear();
prefsPrivateEditor.commit();
}
});
他のアプリでは、次のように取得しています:
Context otherAppsContext = null;
try {
otherAppsContext = createPackageContext("com.example.app", 0);
} catch (NameNotFoundException e) {
}
sharedPreferences = otherAppsContext.getSharedPreferences(PREFS_READ_WRITE, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
String authToken=sharedPreferences.getString(KEY_READ_WRITE, "WORLD READ WRITE EMPTY");
Toast.makeText(getApplicationContext(), authToken, Toast.LENGTH_SHORT).show();