Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1566562
  • 博文数量: 113
  • 博客积分: 3526
  • 博客等级: 中校
  • 技术积分: 1815
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-08 09:46
个人简介

记录总结自己的工作

文章分类

全部博文(113)

文章存档

2015年(19)

2014年(10)

2013年(6)

2012年(16)

2011年(24)

2010年(21)

2009年(17)

分类: 嵌入式

2012-02-28 11:13:05

      Android不同应用之间数据的共享有许多方式,但是我觉得还是使用sharedPreference比较简单和轻量级。如果程序B想要访问程序A的sharedPreference可以通过下面的语句来实现:

  1.         try {
  2.             AContext =createPackageContext(A_PACKAGE_NAME,
  3.                     Context.CONTEXT_IGNORE_SECURITY);
  4.         } catch (NameNotFoundException e) {
  5.             Log.e(TAG, "find package error!");
  6.         }
  7.         SharedPreferences sp = AContext.getSharedPreferences(PREFERENCES_NAME,
  8.                 Context.MODE_WORLD_READABLE);
  9.         sp.getInt(PREF_NAME, 0);
     当然在A程序里创建SharedPreference的时候也需要使用Context.MODE_WORLD_READABLE属性。另外SharedPreference还有Context.MODE_WORLD_WRITEABLE属性。根据SDK的解释,就是允许别的应用程序来对SharedPreference进行写操作。但是在实际程序实验中发现即使加上了这个属性,写操作也是无法成功的,会提示一个错误:Couldn't rename file /data/data/....PREFERENCES_NAME.XML to  /data/data/....PREFERENCES_NAME.XML.bak。这个错误的原因应该是很明确了,程序B在程序A的目录里面没有创建和重命名文件的权限。

     那么到底要怎么样才能让程序B在程序A的SharedPreferences里面写东西呢,其实很简单,在manifest.xml里面将两个应用程序的android:sharedUserId属性设为相同的就可以了。而且SharedPreference的属性也不需要Context.MODE_WORLD_WRITEABLE了,只需要Context.MODE_PRIVATE也可以完成读写操作。




阅读(12401) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~