两个application 互相访问数据 (非shareUserId)
来源:互联网 发布:sql 展开bom到最底层 编辑:程序博客网 时间:2024/05/16 12:20
A
sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
A设置模式为READABLE AND WRITEABLE,这样其它的app才可以访问这个sharedPreferences
B
sharedPreferences = context.getSharedPreferences(pname, Context.MODE_MULTI_PROCESS);
B的模式必须设置为MODE_MULTI_PROCESS,如果设置为READABLE AND WRITEABLE的话只能读取第一次的值,以后当B修改了value,B是拿不到更新后的值的
下面是MODE_MULTI_PROCESS
的说明:
SharedPreference loading flag: when set, the file on disk will be checked for modification even if the shared preferences instance is already loaded in this process. This behavior is sometimes desired in cases where the application has multiple processes, all writing to the same SharedPreferences file. Generally there are better forms of communication between processes, though.
This was the legacy (but undocumented) behavior in and before Gingerbread (Android 2.3) and this flag is implied when targetting such releases. For applications targetting SDK versions greater than Android 2.3, this flag must be explicitly set if desired.
note:
即使A设置了可读和可写的权限,B只能读取,不能修改,为什么呢?
使用createPackageContext() 向其他程序的SharedPreferences写入数据 时,即使该SharedPreferences是全局可写的,即-rw--rw-rw-,也会出现问题,操作失败。问题在于在向SharedPreferences写入数据,在该SharedPreferences所在的包路径下会产生一个临时存储的以.bak结尾的缓存文件,写入操作时,如果该包的权限没有做过必要的修改,默认是不让其他程序操作的,同样就不能在该包内创建临时文件,所以进而导致写入失败失败。
解决方法:如下,这样shared_prefs包的权限也就变为可读可写可执行的了,自然可以在该包内创建临时文件。
File dir = new File("/data/data/" + getPackageName() + "/shared_prefs/");if (!dir.exists()){dir.mkdirs();}dir.setReadable(true, false);dir.setWritable(true, false);dir.setExecutable(true, false);
- 两个application 互相访问数据 (非shareUserId)
- apk间数据传递(android:shareUserId 介绍、Contenet provider)
- Halcon、VC 数据互相访问
- 待补遗(6)[C++]两个类如何通过友元声明互相访问对方的非公有成员
- Oracle两个数据库互相访问,DBLink使用
- Oracle两个数据库互相访问,DBLink使用
- sqlserver局域网内两个服务器互相访问
- sql server 两个库互相操作数据
- 面试之路(13)-android apk之间共享数据的方式以及shareUserId详解
- ShareUserId不一致导致数据丢失问题
- 使用Data Access Application Block(数据访问应用程序块)
- 父页面里两个iframe之间互相访问
- Oracle两个数据库互相访问的sql脚本
- 两个路由器下的电脑怎么互相访问、控制
- JavaScript:两个可以互相交换数据的列表框
- JavaScript:两个可以互相交换数据的列表框
- js-如何在两个页面之间互相传递数据?
- android 应用程序数据共享shareuserid篇+ContentResolver+ContentProvider
- 二叉树遍历(递归和非递归实现)
- PHP 对象接口
- 深度学习算法实践16---限制性波尔兹曼机(RBM)原理1
- Builder模式初探,附带多态的一点理解。
- Android中如何提取HTML源码内的所有文字内容
- 两个application 互相访问数据 (非shareUserId)
- 约瑟夫环问题(循环链表)
- ListView里面添加Button之类可点击事件Item不可点击的处理方法
- 宿命论
- 002_MyMOBA_UTPawn_RunMap_FootPlacement
- 新装的UBUNTU系统导致旧的Xshell/cuteFTP无法使用
- Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
- http状态码代表含义
- ram同步与异步时序