2012-11-27 34 views
0

先生,我真的不知道如何讓我的代碼工作。它只是無法啓動警報。它只是開始分配的活動並跳過報警部分。我究竟做錯了什麼。感謝提前幫助使用sms關鍵字爲android開始鬧鐘

public class EAlarmReceiver extends BroadcastReceiver { 

public static String sender; 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    Bundle bundle = intent.getExtras(); 
    Object[] pdusObj = (Object[]) bundle.get("pdus"); 
    SmsMessage[] messages = new SmsMessage[pdusObj.length]; 
    for (int i = 0; i<pdusObj.length; i++) 
    { 
      messages[i] = SmsMessage.createFromPdu ((byte[]) 
      pdusObj[i]); 
      sender = messages[i].getOriginatingAddress(); 
    } 

    for (SmsMessage msg : messages) { 
     if (msg.getMessageBody().contains("firealert")) { 

      Calendar cal = Calendar.getInstance(); 
      cal.add(Calendar.SECOND, 0); 

      Intent i = new Intent(context, ReceiverInterface.class); 
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 
       12345, i, PendingIntent.FLAG_CANCEL_CURRENT); 
      AlarmManager am = 
       (AlarmManager)context.getSystemService(Activity.ALARM_SERVICE); 
      am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 
        pendingIntent); 
     }//end if 
    }//end for 

}// end onreceive 

回答

1

開始的活動應該讓你知道發生了什麼線索。除非觸發警報,否則在啓動活動的代碼中沒有任何意義。警報事實上正在觸發,但是由於您已經指定了當前時間(cal.add(Calendar.SECOND,0)),它會立即觸發,啓動相應的PendingIntent。將所需時間添加到日曆中,以便稍後觸發警報。

+0

哦,我看到了,謝謝 –

+0

我試圖把第二個改成「10」,但仍然沒有報警。這是爲什麼?我應該更改android清單中的任何內容嗎? –

+0

我傳遞給PendingIntent.getActivity()的意圖應該指定FLAG_ACTIVITY_NEW_TASK,如API文檔中所述:http://developer.android.com/reference/android/app/PendingIntent.html#getActivity(android.content。上下文,int,android.content.Intent,int)。嘗試添加該標誌,看看它是否被調用。 – Jorge