赞
踩
sharepreference通常用于储存一些简单的信息,比如不考虑安全性的话,我们可以储存密码,也可以储存比如开机时间,或者一些我们设定的信息。利用sharepreference我们可以很方便的进行数据的读写
SharedPreferences pref = getSharedPreferences("example",Context.MODE_PRIVATE);
MODE_PRIVATE:表示这个xml是这个app私有的,其他应用无法获取这个应用的xml文件
MODE_MULTI_PROCESS:能在多个应用间多个进程间互相访问数据
MODE_WORLD_READABLE:可以被其它应该程序读取。
MODE_WORLD_WRITEABLE:可以被其它应该程序读取和写入
SharedPreferences pref = getSharedPreferences("example",Context.MODE_PRIVATE);
int inter = pref.getInt("example_int",1);
String str =pref.getString("example_string","default_string");
得到数据的方法的第一个参数是key,第二个是我们设置的默认值,如果xml里面没有这个key,我们就会得到默认值
SharedPreferences pref = getSharedPreferences("example",Context.MODE_PRIVATE);
Editor edit = pref.edit();
edit.putInt("example_int",5);
edit.putString("example_string","hello world");
edit.commit();//提交
首先我们要保证我们要获取的xml文件在创建时具有被其他应用访问的权限,因此在创建时我们需要将操作模式改为MODE_MULTI_PROCESS:
SharedPreferences pref = getSharedPreferences("example",Context.MODE_MULTI_PROCESS);
其次要创建要获得的应用的context:
Context conetxt = createPackageContext("com.example.set",Context.CONTEXT_IGNORE_SECURITY); //这里编辑器可能会让我们加上try catch捕获异常
SharedPreferences pref = context.getSharedPreferences("example", Context.MODE_MULTI_PROCESS);
int inter = pref.getInt("example_int",1);
String str =pref.getString("example_string","default_string");
当我们是普通应用时获取其他应用的sharepreference,使用上面的代码是没有问题的,但是当我们的应用时系统级应用时,由于进程不同,可以会出现权限不够的现象,常见的比如:
Attempt to read preferences file /data/data/...............xml without permission
因此我们需要给两个应用设置相同的android:sharedUserId
android:sharedUserId="example"
这句话代表将两个应用加入到同一个进程中,如果是系统进程,可以设置为
android:sharedUserId="android.uid.system"
这样两个应用都运行在系统进程中了
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。