Java代码
private static final String SHARED_FILE_NAME = "client_ini";
private static final String SHARED_FILE_BOOLEAN_VALUE = "key_test";
SharedPreferences share = getSharedPreferences(SHARED_FILE_NAME, Context.MODE_WORLD_READABLE);
boolean preBooleanValue = share.getBoolean(SHARED_FILE_BOOLEAN_VALUE, false);// 得到之前的值
// 更改share里的值
share.edit().putBoolean(SHARED_FILE_BOOLEAN_VALUE, !preBooleanValue).commit();// 改变值
boolean afterBooleanValue = share.getBoolean(SHARED_FILE_BOOLEAN_VALUE, false);// 得到之前的值
mValueText.setText(afterBooleanValue + "");
而程序b则在onresume的时候获取程序a中数据:
Java代码
private static final String TARGET_PACKAGE_NAME = "com.example.sharedataa";// 目标数据程序的包名,
/**
* 根据目标程序的包名来获取其程序的上下文
* @return
* @throws NameNotFoundException
*/
private Context getTargetContext() throws NameNotFoundException {
return createPackageContext(TARGET_PACKAGE_NAME, Context.CONTEXT_IGNORE_SECURITY);
}
Java代码
/**
* Context.MODE_MULTI_PROCESS一定要添加,按理说只要Context.MODE_WORLD_READABLE 即可
* <p>
* 但是,如果只有Context.MODE_WORLD_READABLE 的话,即使另一个程序改变了值,这个程序得到的值永远都是第一次获取的值
* <p>
* 不会随着其他程序改变而改变
*/
@Override
protected void onResume() {
super.onResume();
try {
SharedPreferences share = getTargetContext().getSharedPreferences(SHARED_FILE_NAME,
Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
boolean afterBooleanValue = share.getBoolean(SHARED_FILE_BOOLEAN_VALUE, false);// 得到之前的值
mBooleanValueText.setText(afterBooleanValue + "");
} catch (NameNotFoundException e) {
e.printStackTrace();
mBooleanValueText.setText("木有找到该包名");
}
}
private static final String SHARED_FILE_NAME = "client_ini";
private static final String SHARED_FILE_BOOLEAN_VALUE = "key_test";
SharedPreferences share = getSharedPreferences(SHARED_FILE_NAME, Context.MODE_WORLD_READABLE);
boolean preBooleanValue = share.getBoolean(SHARED_FILE_BOOLEAN_VALUE, false);// 得到之前的值
// 更改share里的值
share.edit().putBoolean(SHARED_FILE_BOOLEAN_VALUE, !preBooleanValue).commit();// 改变值
boolean afterBooleanValue = share.getBoolean(SHARED_FILE_BOOLEAN_VALUE, false);// 得到之前的值
mValueText.setText(afterBooleanValue + "");
而程序b则在onresume的时候获取程序a中数据:
Java代码
private static final String TARGET_PACKAGE_NAME = "com.example.sharedataa";// 目标数据程序的包名,
/**
* 根据目标程序的包名来获取其程序的上下文
* @return
* @throws NameNotFoundException
*/
private Context getTargetContext() throws NameNotFoundException {
return createPackageContext(TARGET_PACKAGE_NAME, Context.CONTEXT_IGNORE_SECURITY);
}
Java代码
/**
* Context.MODE_MULTI_PROCESS一定要添加,按理说只要Context.MODE_WORLD_READABLE 即可
* <p>
* 但是,如果只有Context.MODE_WORLD_READABLE 的话,即使另一个程序改变了值,这个程序得到的值永远都是第一次获取的值
* <p>
* 不会随着其他程序改变而改变
*/
@Override
protected void onResume() {
super.onResume();
try {
SharedPreferences share = getTargetContext().getSharedPreferences(SHARED_FILE_NAME,
Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
boolean afterBooleanValue = share.getBoolean(SHARED_FILE_BOOLEAN_VALUE, false);// 得到之前的值
mBooleanValueText.setText(afterBooleanValue + "");
} catch (NameNotFoundException e) {
e.printStackTrace();
mBooleanValueText.setText("木有找到该包名");
}
}