我遇到过这样的问题. 使用cancel() - Android从AlarmManager删除警报
"我试图用两种不同的方法创建和删除一个警报,这两种方法都在应用程序的不同时刻被调用.逻辑.
但是,当我调用AlarmManager的cancel()方法时,警报不会被删除."
为了设置:
Intent myIntent = new Intent(getApplicationContext(),
SessionReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getApplicationContext(), 1, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, now.getTimeInMillis(),
pendingIntent);
Run Code Online (Sandbox Code Playgroud)
要删除:
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(),
SessionReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getApplicationContext(), 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
Run Code Online (Sandbox Code Playgroud)
但是这并没有删除已注册的警报.提前致谢.
编辑:已解决!曾经想要从某个特定日期开始设置通知(当某个活动开始时或按下按钮时?)阅读更多信息以了解如何:
//Set a notification in 7 days
Calendar sevendayalarm = Calendar.getInstance();
sevendayalarm.add(Calendar.DATE, 7);
Intent intent = new Intent(this, Receiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 001, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, sevendayalarm.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
这是Receiver类的代码
public class Receiver extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Intent intent = new Intent(this, Test.class);
long[] pattern = {0, 300, 0};
PendingIntent pi = PendingIntent.getActivity(this, 01234, intent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.depressiontest)
.setContentTitle("Take …Run Code Online (Sandbox Code Playgroud)