1

1 つのアクティビティとブロードキャスト レシーバーを持つアプリを開発しています。アクティビティで設定した何らかの設定を利用できるように放送受信機を設定したい。

以下のコードを使用し、2 つのアクティビティ間で動作しますが、アクティビティとブロードキャスト レシーバーの間で設定をキャッチできません。

ここで avtivity に保存するための私のコード:

private void savePreferences(String key, String value) {
    SharedPreferences sp = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor edit = sp.edit();
    edit.putString(key, value);
    edit.commit();
}

そしてブロードキャストレシーバーのこのコード:

 @Override
    public void onReceive(Context context, Intent intent) {

     Bundle extras = intent.getExtras();




        SharedPreferences sp = context.getSharedPreferences("myPrefs", 
                Context.MODE_PRIVATE);
        String Password = sp.getString("PASSWORD", "1234");

         int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(context, 
                         "password is"+Password, duration);
            toast.show();
  }
4

1 に答える 1

1

レシーバーは「myPrefs」という名前のファイルを使用していますが、アクティビティでプリファレンスを設定するときにデフォルトのファイル名を使用しています。

「myPrefs」という名前の特定の設定ファイルを開くこのいずれかを使用します

SharedPreferences sp = context.getSharedPreferences("myPrefs", 
            Context.MODE_PRIVATE);

または、これはデフォルトのファイルを開きます

SharedPreferences sp = PreferenceManager
        .getDefaultSharedPreferences(this);

ただし、異なる設定ファイルを参照するため、2 つの混合ではありません。

于 2013-10-12T19:23:45.463 に答える