3

我有多个应用程序通过首选项共享某些数据。每个应用程序都通过 PreferenceActivity(来自 xml)设置其首选项。两个问题:

如何在另一个应用程序中使用/编辑由一个应用程序创建的首选项。如果我弄清楚如何使用 PreferenceActivity 创建 MODE_WORLD_WRITEABLE 首选项,这将解决问题。

 SharedPreferences prefs = getSharedPreferences(
          <String referring to another package´s prefs>, MODE_WORLD_WRITEABLE);
        HashMap<String, String> map = (HashMap<String, String>) prefs
          .getAll();


        String str = map.toString();
        tv.setText(str);

上面的代码返回 {}

  • 其次,如何使用 addPreferencesFromIntent(i) - 即使意图不是 Null,我也会收到 NullPointerException。

我在这里先向您的帮助表示感谢。

最好的,萨米尔

4

1 回答 1

6

要以安全的方式从另一个应用程序访问首选项,请在 Manifest 中设置相同的android:sharedUserId。这将允许您以 MODE_PRIVATE(或安全)方式访问首选项和文件。

花了很多时间后,我们意识到仅此一项是行不通的,需要创建第一个应用程序的包上下文来访问第二个应用程序中的文件:

try {
            Context c = createPackageContext(com.app.first, MODE_PRIVATE);
            SharedPreferences prefs = c.getSharedPreferences(
                    "com.app.first_preferences", MODE_PRIVATE);

        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }

非常感谢@CommonsWare 和 Karthik Shanmugam 的帮助!

于 2010-08-24T04:39:02.293 回答