编程语言
首页 > 编程语言> > Android PreferenceActivity可跨应用程序创建MODE_WORLD_WRITEABLE首选项

Android PreferenceActivity可跨应用程序创建MODE_WORLD_WRITEABLE首选项

作者:互联网

我有多个应用程序通过首选项共享某些数据.每个应用程序通过PreferenceActitivity(来自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.

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

最好,
萨米尔

解决方法:

要以安全的方式从另一个应用程序访问首选项,请在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的帮助!

标签:preferenceactivity,android,preferences
来源: https://codeday.me/bug/20190827/1739557.html