2013-05-01 59 views
0

我正在開發一個安排應用程序的安排消息發送。我正在使用報警管理器。我的代碼的主要部分如下:使用報警管理器安排消息

mConfirm.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = 
      new Intent(getApplicationContext(),MyNotificationService.class); 

     mMessage = mEditTextMessage.getText().toString(); 
     mNumber = mEditTextNumber.getText().toString(); 
     c.set(mYear, mMonth, mDay); 
     c.set(Calendar.HOUR_OF_DAY, mHour); 
     c.set(Calendar.MINUTE, mMinutes); 

     Bundle bundle = new Bundle(); 
     bundle.putCharSequence("number", mNumber); 
     bundle.putCharSequence("message", mMessage); 
     intent.putExtras(bundle); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     PendingIntent pendingIntent = 
      PendingIntent.getService(getApplicationContext(), 0, intent, 0); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 
      pendingIntent); 
    } 
}); 

我應該如何實現MyNotificationService類,以便它在設定的時間發送消息?該類應該是服務還是廣播接收者?

+0

它取決於你想使用什麼,都將使用 – stackoverflow 2013-05-01 13:44:30

回答

2

下面的代碼將允許您每5秒鐘後調用一次廣播接收器。您可以使用set()或setTimeZone()方法在特定時間進行設置。

AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class); 
intent.putExtra("abc", Boolean.FALSE); 
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
//After after 5 seconds 
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 5 , pi); 

AlarmManagerBroadcastReceiver類是一個廣播公司。

1

您可以使用廣播接收器從意圖接收消息。 您可以創建一個可以讓您收到消息的接收器類。

Intent intent=new Intent(MyReceiver.ACTION_REFRESH_ALARM); 
pendingIntent=PendingIntent.getBroadcast(this, 0, intent, 0); 
alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,0,pendingIntent); 

public class MyReceiver extends BroadcastReceiver 
{ 

    public static final String ACTION_REFRESH_ALARM ="com.paad.network.ACTION_REFRESH_ALARM"; 

@Override 
public void onReceive(Context context, Intent intent) { 

      //Extract Messages 
}}