我打電話給BroadcastReceiver
通過AlarmManager它對我來說工作正常。爲廣播接收機創建多個AlarmManager?
但
我需要什麼這一次
I want to create multiple AlarmManager which call the same BroadcastReceiver Class.
有什麼辦法做到這一點的過程?
我打電話給BroadcastReceiver
通過AlarmManager它對我來說工作正常。爲廣播接收機創建多個AlarmManager?
但
我需要什麼這一次
I want to create multiple AlarmManager which call the same BroadcastReceiver Class.
有什麼辦法做到這一點的過程?
您可以通過爲使用的掛起的Intent設置不同的請求代碼來設置警報。確保每個鬧鐘都有唯一的請求代碼。然後用一個廣播接收器接收它們。
另一件事要記住,如果設備重新啓動,然後掛起的意圖不再存在。所以,你必須使用另一個接收器來確定設備是否重新啓動。您必須保存唯一的請求代碼,然後當設備重新啓動時,必須使用相同的請求代碼恢復您的警報。希望能幫助到你。
編輯:
廣播接收器
package com.your.package;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String Noti_title = intent.getExtras().getString("title");
String Noti_message = intent.getExtras().getString("notes");
int Noti_code = intent.getExtras().getInt("code");
Log.d("AlarmReciever", Noti_title + " " + Noti_message);
Intent myIntent = new Intent(context, NotificationService.class);
myIntent.putExtra("title", Noti_title);
myIntent.putExtra("notes", Noti_message);
myIntent.putExtra("code", Noti_code);
context.startService(myIntent);
}
}
服務:
package com.your.package;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.IBinder;
public class NotificationService extends Service {
private NotificationManager mManager;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
@SuppressWarnings({ "static-access", "deprecation" })
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
String Noti_title = intent.getExtras().getString("title");
String Noti_message = intent.getExtras().getString("notes");
int Noti_Code = intent.getExtras().getInt("code");
mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this.getApplicationContext(), MainActivity.class);
Notification notification = new Notification(R.drawable.ic_launcher , Noti_title , System.currentTimeMillis());
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(this.getApplicationContext(),Noti_title , Noti_message , pendingNotificationIntent);
notification.vibrate = new long[] { 100L, 100L, 200L, 500L };
mManager.notify(Noti_Code , notification);
try {
Uri notification_uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification_uri);
r.play();
} catch (Exception e) {}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
用法:
public void SetAlarm(Calendar calendar, int reqCode) {
String dateName = idea.getText().toString();
String dateNote = note.getText().toString();
Log.d("SetAlarm Texts", "Date : " + dateName + " Note: " + dateNote);
Intent myIntent = new Intent(mActivity, AlarmReceiver.class);
myIntent.putExtra("title", "Her : " + dateName);
myIntent.putExtra("notes", dateNote);
myIntent.putExtra("code", reqCode);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mActivity,
reqCode, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) mActivity
.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(),
pendingIntent);
}
什麼不同,不同時間的意思是......? – JoxTraex
@JoxTraex:我刪除了該關鍵字。 –