这个qustion已经被问了很多,我尝试了很多答案而且没有用,所以这是最常见的一个
public void onClick(View v) {
boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this ,0,
new Intent(MainActivity.this,Notifications.class),
PendingIntent.FLAG_NO_CREATE) != null);
if (alarmUp)
{
am.cancel(pend);
Intent alarmIntent = new Intent(MainActivity.this,Notifications.class);
final PendingIntent pendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent,
PendingIntent.FLAG_NO_CREATE);
if (pendingIntent != null) {
pendingIntent.cancel();
}
Toast.makeText(MainActivity.this,"Tweak cleared", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this,"There is no Tweak!", Toast.LENGTH_LONG).show();
}
这个按钮在我的MainActivity中,每次按下我想检查是否有闹钟或者没有,如果有取消闹钟" am"和烤面包按摩..现在应用程序总是在其他声明中提供按摩"没有Tweak!"即使有闹钟......我在android中初学者所以会很感激任何帮助..谢谢。
修改
这是我的MainActivity中的另一个启动闹钟的按钮
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intent = new Intent(getApplicationContext(), Notifications.class);
pend = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pend);
在我按下另一个取消它之前按此按钮。
修改
这是我检查警报并取消它的其他尝试..但是当我关闭应用程序并再次打开时它会告诉我没有警报"没有调整!"即使有一个
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (am != null && pend != null) {
am.cancel(pend);
pend = null;
Toast.makeText(MainActivity.this,"Tweak cleared", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this,"There is no Tweak!", Toast.LENGTH_LONG).show();
}
}
});
pend和am是prviate变量,它们在" start"中初始化。按钮
由于
答案 0 :(得分:0)
因为您正在使用标志“PendingIntent.FLAG_NO_CREATE”,它表示如果描述的PendingIntent尚不存在,则只返回null而不是创建它。
从您的代码开始,您之前从未创建过PendingIntent,因此它将始终返回null。
答案 1 :(得分:0)
private AlarmManager mAlarmMgr;
private PendingIntent mPendingIntent;
if (mAlarmMgr != null && mPendingIntent != null) {
mAlarmMgr.cancel(mPendingIntent);
mPendingIntent = null;
Log.v("alarm", "done");
} else {
Log.v("alarm", "no PendingIntent instance to cancel");
}
你是如何取消闹钟的。