2012-11-27 2 views
0

선생님, 제 코드를 작동시키는 법을 모르겠습니다. 알람을 시작할 수 없습니다. 할당 된 활동을 시작하고 경보 부분을 건너 뜁니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까. 사전에 도움을 주셔서 감사합니다안드로이드에 대한 SMS 키워드를 사용하여 알람 시작

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"으로 변경하려고 시도했지만 여전히 경고하지 않습니다. 그게 왜? 안드로이드 매니페스트에서 무엇인가를 바꿔야합니까? –

+0

API 문서에 명시된 바와 같이 PendingIntent.getActivity()에 전달 된 의도는 FLAG_ACTIVITY_NEW_TASK를 지정해야합니다. http://developer.android.com/reference/android/app/PendingIntent.html#getActivity(android.content). Context, int, android.content.Intent, int). 해당 플래그를 추가하여 호출되는지 확인하십시오. – Jorge

관련 문제