1、SharedPreferences权限设置,我们在getSharedPreferences方法中第二参数是用来表明我们的SharedPreferences的使用属性的,这个参数可以是下面值:
MODE_PRIVATE=0:只能是当前的应用才能操作文件如果创建的文件已经存在新内容覆盖原内容;
MODE_APPEND=32768:新内容追加到原内容后这个模式也是私有的这个文件只能被创建文件的应用所访问;
MODE_WORLD_READABLE=1:允许其他应用程序读取本应用创建的文件;
MODE_WORLD_WRITEABLE=2:允许其他应用程序写入本应用程序创建的文件,会覆盖原数据。
所以如果我们的SharedPreferences能让外部程序读取,就必须选择MODE_WORLD_READABLE或或者MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE。
但是有一点值得注意,当使用这几种权限时,其他程序访问数据时启动本程序修改文件数据,其他程序得到的还是缓存数据得不到最新的数据, 其他程序要想得到最新数据,本程序在写文件时必须使用MODE_MULTI_PROCESS权限(参数是4)。 如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如: File xmlFile = new File(“/data/data//shared_prefs/config.xml”);//应替换成应用的包名.
第一个程序的: SharedPreferences preferences = getSharedPreferences("count", MODE_WORLD_READABLE);
第二个程序的:
// 获取其他程序所对应的 Context
Context useCount = createPackageContext("org.crazyit.io", Context.CONTEXT_IGNORE_SECURITY);(org.crazyit.io是包名,为了获取对应的context)
SharedPreferences prefs = useCount.getSharedPreferences("count", Context.MODE_WORLD_READABLE);