私は、共有設定ファイルを介してデバイスにインストールされている他のアプリケーションと対話するAndroidアプリケーションを開発してきました。
このファイルはMODE.WORLD_READABLEとして作成され、インストールされているすべてのアプリケーションには、共通の定義済みの名前とプロパティ(その特定のプロパティの値が変更される)を持つ独自のファイルがあります。
たとえば、AppAとAppBには、それぞれプロパティ「property_shared_file」を持つ「app_shared_file.xml」という名前の共有ファイルが必要です。
私のアプリケーションから、最初にこのファイルにアクセスしてそのプロパティ値を読み取り、その結果に応じて私のものを作成/更新したいと思います。
それにもかかわらず、私はそれを達成するのにいくつかの問題を抱えています。Androidのドキュメントでは、次のことがわかります。
設定ファイル'name'の内容を取得して保持し、その値を取得および変更できるSharedPreferencesを返します。SharedPreferencesオブジェクトの1つのインスタンスのみが、同じ名前の呼び出し元に返されます。つまり、呼び出し元は、編集が行われるとすぐにお互いの編集を確認できます。
他のアプリケーション共有設定ファイルを読んだ後、私のものを編集する代わりにシステムを作成/更新しようとすると、以前に読んだものを使用しています。それどころか、私が私のものを更新することから始めて、後で他のアプリを読む場合-他のアプリを読む代わりに、アクセスされているのは私のものです。
何かご意見は?
共有設定を読み取るために使用しているコードは、[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);
アプリの共有設定での書き込みに使用しているコードは次のとおりです。
SharedPreferences prefs= getSharedPreferences(SHARED_PREF_NAME, context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(SHARED_PREF_PROP, value);
editor.commit();
前もって感謝します。