SMS を送信してユーザーにリマインダー時間が経過したことを通知するリマインダー アプリがあります。これはうまくいきます。ただし、電話がスリープ状態でリマインダーを逃した場合に何が起こるかをテストしています。
AlarmManager
リマインダー時間に対応するアラームを設定するために使用しています。私のログによると、電話が再起動し、SMS を送信しようとしたときにアラームが鳴ったが、SMS が受信されないことが示されています。
問題は、SMS が送信されない理由をデバッグする方法があるかということです。
私の現在のコードは、アラーム イベントが発生したときに ContentObserver を設定します。
private void registerToListenForSentSMS()
{
MessageSentListener smsObeserver = new MessageSentListener(new Handler());
ContentResolver contentResolver = TheEveryOtherAlarmAppApplication.getAppContext().getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsObeserver);
}
MessageSentListener は、SMS イベントが発生したことを通知されます。
public class MessageSentListener extends ContentObserver
{
public MessageSentListener(Handler handler)
{
super(handler);
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
Log.d(Constants.ALARM_APP_LOG_TAG, "Something happend");
ContentResolver contentResolver = AlarmAppApplication.getAppContext().getContentResolver();
contentResolver.unregisterContentObserver(this);
}
}
しかし、これはアプリに関係のない SMS イベントが原因である可能性があります。とにかく、それは本当に解決策に近づくことはありません - 何も起こらなかったときに何がうまくいかなかったのか知りたいです!
アラーム SMS が送信されない場合は、再送信するか、メールなどの他の通知方法を使用できます。