访问其他应用程序的共享首选项

时间:2013-12-04 07:02:27

标签: android

我正在尝试使用以下代码访问其他应用程序的共享首选项:

final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();
            @SuppressWarnings("deprecation")
            Context myContext = null;
            try {
                myContext = createPackageContext("owning app's pkg name", 
                Context.CONTEXT_IGNORE_SECURITY);
            } catch (NameNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } // where com.example is the owning  app containing the  preferences
              @SuppressWarnings("deprecation")
            SharedPreferences testPrefs = myContext.getSharedPreferences 
            ("file", Context.CONTEXT_IGNORE_SECURITY); 


            Map<String, ?> items = testPrefs .getAll();
            System.out.println(items.size());
            for(String s : items.keySet())
            {
                //do somthing like String value=     items.get(s).toString());
                System.out.println(items.get(s).toString());
                }

但是我的大小为地图“items”的0。这是堆栈跟踪:

12-04 12:24:13.659: W/SharedPreferencesImpl(22768): Attempt to read preferences file   /data/data/owning app's pkg name/shared_prefs/filename.xml without permission
12-04 12:24:13.659: I/System.out(22768): 0

表示拥有的应用不支持共享。有什么办法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

拥有应用程序需要具有WORLD_READABLE模式权限。 此外,您必须在两个应用程序的清单文件中添加相同的android:sharedUserId。