您的位置:首页 > Web前端

SharePreferences应用跨进程获取数据

2016-04-14 20:05 411 查看
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("木有找到该包名");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: