16

ここで何かが足りないので、誰かが助けてくれることを願っています。以下を使用してアラームを設定しています。

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  broadcast_intent, 0);

    broadcast_intent.putExtra("test", "ValueReceived"); //data to pass
    Date date = someVariable.getDateTime();


    long triggerAtTime = date.getTime();

    alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtTime, pendingIntent);

および以下を使用する放送受信機:

public class AlarmBroadcastReceiver extends BroadcastReceiver{

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

        Toast.makeText(context, "Alarm has been received "+intent.getStringExtra("test"), Toast.LENGTH_LONG).show();

    }

}

ただし、意図は明らかに「空」です。getStringExtra の null 値が表示されます。そのため、データはブロードキャスト レシーバーに渡されません。私は何を間違っていますか?どうすればデータを渡すことができますか。

どうもありがとう

4

1 に答える 1

31

PendingIntent に渡すに、Intent にエクストラを追加する必要があります。

Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class);
broadcast_intent.putExtra("test", "ValueReceived"); //data to pass

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  broadcast_intent, 0);
于 2012-09-19T14:43:24.757 に答える