私はsharedpreferenceファイルを介してデバイスにインストールされている他のアプリケーションとやり取りするAndroidアプリケーションを開発しています。異なるアプリケーション間でAndroidの共有設定
このファイルは、MODE.WORLD_READABLEとして作成され、インストールされたすべてのアプリケーションには、共通の定義された名前とプロパティを持つ独自のファイルがあります(変更はその特定のプロパティの値です)。
たとえば、AppAとAppBには、プロパティ "property_shared_file"を持つ "app_shared_file.xml"という名前の共有ファイルがそれぞれ1つ必要です。
私のアプリケーションからは、まずこのファイルにアクセスしてそのプロパティ値を読み込み、その結果に応じて私の作成/更新を行いたいと思います。
しかし、私はそれを達成するためにいくつか問題があります。
はあなたが取得できると はその値を変更し、それを通してSharedPreferencesを返し、 を取得し、環境設定の内容は、「名前を」ファイルを保持:Androidのドキュメントに私がいることがわかります。 SharedPreferencesオブジェクトの1つのインスタンス は、同じ名前の呼び出し元に返されます。つまり、作成されるとすぐに が編集されます。
他のアプリケーションの共有設定ファイルを読んだ後に、私が作成/更新しようとすると、私の編集の代わりに、以前読み込んだシステムを使用しています。反対に、私は私のものを更新し、後で他のアプリを読むことから始めます - 他のものを読むのではなく、アクセスされているものが私のものです。
どのような考えですか?
I共有県である読み取るために使用しているコード【のpackageNameは、他のアプリpckgである]:
Context con = context.createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences pref = con.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_WORLD_READABLE);
pref.getBoolean(SHARED_PREF_PROP, false);
Iアプリ共有県に書き込むための使用しているコードは:
SharedPreferences prefs= getSharedPreferences(SHARED_PREF_NAME, context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(SHARED_PREF_PROP, value);
editor.commit();
ありがとうございます。
はい、2つの異なるアプリケーションがあり、各アプリケーションには独自のshared_prefsフォルダに保存されている共有設定ファイルがあります。 はい、私はPackageManager経由で他のアプリケーションのパッケージ名を知っていますが、どのアクティビティ/クラスがそれを処理するかを知るオプションはありません。 私は既にそのリンクを見ていましたが、ここで問題となるのは、同じ名前の2つの異なる共有プリファレンスにアクセスすることです。 1つを開いた後、他のものを開くときに、最初に開かれた参照ポイントを参照し、参照ポイントはコンテキストとして送信されません。 – user1683087