私は最初のアプリに取り組んでおり、私の目的は、ユーザーが設定した日時に開始し、最初に設定された時間に一連の事前定義された SMS を送信することです (つまり、最初の SMS が送信され、2 番目の SMS が +3 分に送信され、 +7 分で送信される 3 番目の SMS など)。さまざまな保留中のリクエスト コードを使用してすべてのアラームを一度に設定し、メッセージごとに複数のブロードキャスト レシーバーを設定することでこれを行うことができましたが、効率的ではないようです。同じリクエストコードを再利用して(シリーズのキャンセルを可能にする)、同じ受信機から各ブロードキャストを受信した後にアラームを設定することはできますか? 以下のコード、どんな提案も歓迎します。
主な活動
Intent intent = new Intent(MainActivity.this,
Receiver1.class);
intent.putExtra(EXTRA_MESSAGE1, message1);
intent.putExtra(EXTRA_NUMBER, number);
Intent intent2 = new Intent(MainActivity.this,
Receiver2.class);
intent2.putExtra(EXTRA_MESSAGE2, message2);
intent2.putExtra(EXTRA_NUMBER, number);
PendingIntent sender = PendingIntent.getBroadcast(
MainActivity.this, 1, intent, 0);
PendingIntent sender2 = PendingIntent.getBroadcast(
MainActivity.this, 2, intent2, 0);
// Set alarm for this time
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, mYear);
cal.set(Calendar.MONTH, mMonth);
cal.set(Calendar.DAY_OF_MONTH, mDay);
cal.set(Calendar.HOUR_OF_DAY, mHour);
cal.set(Calendar.MINUTE, mMinute);
// Schedule alarm
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
AlarmManager am2 = (AlarmManager) getSystemService(ALARM_SERVICE);
am2.set(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis() + 30 * 1000, sender2);
受信機 1
public class Receiver1 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE1);
String number = intent.getStringExtra(MainActivity.EXTRA_NUMBER);
sendSMS(number, message);
};
// ---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message) {
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
};
}
受信機 2
public class Receiver2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE2);
String number = intent.getStringExtra(MainActivity.EXTRA_NUMBER);
sendSMS(number, message);
};
// ---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message) {
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
};
}