3

設定を通じて特定のデータを共有する複数のアプリケーションがあります。各アプリは、(xmlからの)PreferenceActitivityを介してプリファレンスを設定します。2つの質問:

あるアプリによって作成された設定を別のアプリで使用/編集するにはどうすればよいですか。問題を解決する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が発生します。

よろしくお願いします。

最高、Sameer

4

1 に答える 1

6

安全な方法で別のアプリから設定にアクセスするには、マニフェストで同じandroid:sharedUserIdを設定します。これにより、設定とファイルに MODE_PRIVATE (または安全な) 方法でアクセスできるようになります。

多くの時間を費やした後、これだけでは機能しないことがわかりました。2 番目のアプリのファイルにアクセスするには、最初のアプリのパッケージ コンテキストを作成する必要があります。

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 に答える