程序之间共享数据SharedPreferences(一)
来源:互联网 发布:js json双引号转义 编辑:程序博客网 时间:2024/06/10 07:37
Context提供了几种模式
1.Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆 盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
2.Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
3.Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
app1用于设置保存,如下代码:
public class App1Act1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act1); final SharedPreferences pref = getSharedPreferences("cfg", Context.MODE_WORLD_READABLE); final SharedPreferences.Editor editor = pref.edit(); final TextView tv = (TextView) findViewById(R.id.tv); findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editor.putString("abc", "123"); editor.commit(); } }); findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setText("abc=" + pref.getString("abc", "")); } }); }}
app2用于获取app1上设置的值,如下代码:
public class App2Act1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act1); final TextView tv = (TextView) findViewById(R.id.tv); findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setText("abc=" + getMsg()); } }); } private String getMsg() { try { Context context = createPackageContext("com.kv.app1", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); SharedPreferences pref = context.getSharedPreferences("cfg", MODE_WORLD_READABLE); String value = pref.getString("abc", ""); return value; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; }}
通过createPackageContext去获取对方的context,其中
Context.CONTEXT_INCLUDE_CODE:这个标志是在我们需要执行插件中的某段代码需要加上的值。
CONTEXT_IGNORE_SECURITY:这个标志是必须的,是忽视安全性,如果没有这个值的话,那么我们访问什么都是失败的。
注意:
另外一个程序在访问的时候,只能读,写的话,会报错:
SharedPreferencesImpl: Couldn't rename file /data/data/com.kv.app1/shared_prefs/cfg.xml to backup file /data/data/com.kv.app1/shared_prefs/cfg.xml.bak
阅读全文
0 0
- 程序之间共享数据SharedPreferences(一)
- SharedPreferences多个程序之间共享数据
- SharedPreferences多个程序之间共享数据
- 程序之间共享数据SharedPreferences(二)--sharedUserId
- sharedPreferences不同activity之间的数据共享
- Android Preference的使用总结(很全很详细)以及SharedPreferences多个程序之间共享数据
- android 利用SharedPreferences 在不同应用之间共享数据
- SharedPreferences 数据共享问题
- 数据的存储(一、共享参数 SharedPreferences)
- Android sharedPreferences基本用法和用于两个应用之间共享数据
- Android数据存储--SharedPreferences--共享数据存储
- Android 用sharepreference在各个程序之间共享数据
- Android 用sharepreference在各个程序之间共享数据
- 同一程序不同实例进程之间共享数据
- Android 用sharepreference在各个程序之间共享数据
- ContentProvider实现程序之间共享数据(如短信、联系人)
- Android SharedPreferences用法及程序共享机制
- 进程之间数据共享
- 【Android笔记-异常-3】数字在TextView中显示一定要先转换为字符串。String.valueOf(数字)
- WPF 批量读取文件夹下TXT文件写入EXCEL
- Kotlin中的const常量
- 组合数学-HDU5894
- Javascript面向对象编程,定义类(class)的三种方法
- 程序之间共享数据SharedPreferences(一)
- 为什么多个客户端可以连接服务器的同个端口?
- 一些文件夹
- LeetCode 217. Contains Duplicate
- servlet的url-pattern匹配规则详细描述
- ucos-iii学习之ucos-iii的特性
- Elasticsearch Reference 5.5 中文翻译5
- Android面试-2017
- python实现自动查找并使用空闲GPU