1

intent.putExtra(key, value)値を入力して値を取得できることは承知していますintent.getStringExtra(key)が、次のコードでは期待どおりに動作しません。値を取得するとき、私は取得してNUllPointer, printLn needs a messageいます。

値を設定しているコード:

public void SetAlarm(Context context, int seconds, String type) {
    CustomLog.logBlue(Thread.currentThread().getStackTrace(), "set alarm");

    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    intent.putExtra(ONE_TIME, Boolean.FALSE); //ONE_TIME = "oneTime"
    intent.putExtra("c", "ayush");

    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), seconds * 1000, pi);

    CustomNotification.generateNotification(1, context, "Tracking enabled");
}

そして、BroadcaseReceiver の onReceive で値を取得しています: [無関係なコードを省略]

@Override
public void onReceive(Context context, Intent intent) {
     Bundle extras = intent.getExtras();
     Log.e("test", extras.getString("c"); <------ ERROR
     // also tried intent.getStringExtra("c");
}
4

3 に答える 3

4

PendingIntent.getBroadcast()を呼び出すときは、フラグFLAG_UPDATE_CURRENTを使用します。あなたのコードで:

PendingIntent pi = PendingIntent.getBroadcast(
                                 context, 0, intent, 
                                 PendingIntent.FLAG_UPDATE_CURRENT);
于 2013-11-23T02:20:23.697 に答える
0

このように試してみてください

Intent intent = new Intent(CurrentActivity.this, AlarmManagerBroadcastReceiver.class);     
intent.putExtra("c", "ayush");

受信機で

intent.getStringExtra("c")
于 2013-06-26T06:39:32.857 に答える
-1

onReceive(...) に2番目の値として正しい意図を与えているかどうかを確認してください。

それ以外の場合は、次の行を使用しないでください

Bundle extras = intent.getExtras();

もっと好きになる

Bundle extras = getIntent().getExtras();

?

于 2013-06-26T07:14:35.250 に答える