6
我有一個提醒應用程序,它會發送短信來通知用戶他們的提醒時間已過。這很好。但是,我一直在測試手機在睡着時錯過提醒的情況。Android - 確定短信發送失敗的原因
我使用AlarmManager
來設置警報以符合提醒時間。我的日誌記錄顯示,當手機重新啓動並嘗試發送短信時,鬧鐘響起,但SMS從未收到。
所以問題是,有沒有辦法調試爲什麼不發送短信?
private void registerToListenForSentSMS()
{
MessageSentListener smsObeserver = new MessageSentListener(new Handler());
ContentResolver contentResolver = TheEveryOtherAlarmAppApplication.getAppContext().getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsObeserver);
}
MessageSentListener得到通知一些短信事件發生:
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);
}
}
但是這可以通過短信事件引起的,當發生報警事件時
我當前的代碼設置一個ContentObserver與我的應用無關。無論如何,它並沒有真正讓我接近一個解決方案 - 我想知道什麼時候出錯沒有什麼發生!
在事件的報警短信沒有發送,我就能夠重新發送任何或者使用一些其他的通知方法,如電子郵件等
謝謝 - 我會嘗試了這一點。我想我必須在onReceive()方法中取消註冊接收者。 – barry
這似乎工作。有幾個問題雖然 - 1 - 看起來我不需要註銷接收者(當接收到更多短信時,他們不會記錄任何內容)。爲什麼是這樣? 2 - Android如何知道短信已發送?那裏有一些低級SMS功能嗎? – barry
我可以在哪裏取消註冊廣播 –