44

SharedPreferencesAndroid ではアプリケーションに対してローカルであり、異なるアプリケーション間で共有されません。私が言ったら

SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);

MODE_WORLD_READABLEこの設定を行うとはどういう意味MODE_WORLD_WRITABLEですか MODE_PRIVATE?

4

4 に答える 4

51

getSharedPreferences(String name, int mode)ここで説明されています

MODE_PRIVATE: File creation mode: the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID).

MODE_WORLD_READABLE: File creation mode: allow all other applications to have read access to the created file.

MODE_WORLD_WRITEABLE : File creation mode: allow all other applications to have write access to the created file.

詳細はこちら

編集 API 17 以降、MODE_WORLD_READABLEMODE_WORLD_WRITEABLEは廃止されました。

この定数は、API レベル 17 で非推奨になりました。
だれでも読み取り可能なファイルを作成することは非常に危険であり、アプリケーションにセキュリティ ホールが生じる可能性があります。強くお勧めしません。代わりに、アプリケーションはContentProvider、 、BroadcastReceiver、 などの相互作用のためにより正式なメカニズムを使用する必要がありServiceます。バックアップや復元を行う場合など、このアクセス モードがファイルに残るという保証はありません。

于 2012-10-31T07:37:13.027 に答える
16

設定はファイル システムに保存されます。モードは、アプリの設定にアクセスできるユーザーを定義します。

簡単な言葉で:

  • MODE_PRIVATEプリファレンスの動作モードです。これはデフォルトのモードであり、作成されたファイルには呼び出し元のアプリケーションのみがアクセスできることを意味します。
  • MODE_WORLD_READABLEのアプリケーションでは、作成したファイルを読み取ることはできますが、変更することはできません。
  • 他のアプリケーションの場合MODE_WORLD_WRITEABLE、作成したファイルへの書き込み権限も持っています。

推奨される方法は、ファイル名を指定せずにデフォルト モードで使用することです。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
于 2012-10-31T07:49:50.827 に答える
9

共有設定もファイルシステムのファイルに保存されます。そして、これらのモードは、他のアプリケーションがファイル内のシャード設定を読み取る権利を持っているかどうかを定義します。

MODE_PRIVATE共有設定を作成するアプリケーションのみが設定の読み取り/書き込みを実行できることを意味します

MODE_WORLD_READABLEつまり、他のアプリケーションも共有設定APIを使用してこれらの設定を読み取ることができますが、この設定ファイルに値を書き込むことはできません

MODE_WORLD_WRITEABLEこれは、他のアプリケーションも共有設定APIを使用して設定ファイルを読み書きできることを意味します

次のリンクには、モードを説明するための適切な説明とコード例もあります。

http://thedevelopersinfo.com/2009/11/25/getting-sharedpreferences-from-other-application-in-android/

http://chrisrisner.com/Accessing-the-Shared-Preferences-of-a-Different-Application-in-Android

于 2012-10-31T09:03:45.260 に答える