android - 关闭和删除警报

标签 android

我想关闭一个闹钟并同时删除两个不同 Activity 中的一个闹钟。我要为这两个 Activity 使用什么功能? alarmmanager.cancel() 关闭或删除警报?

我写了这段代码:

Button DeleteButton = (Button) this.findViewById(R.id.dismiss_button);
    DeleteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // Build Intent and Pending Intent to Set Snooze Alarm
            Intent AlarmIntent = new Intent(AlarmActivity.this,
                    AlarmReceiver.class);
            AlarmManager AlmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
            PendingIntent Sender = PendingIntent.getBroadcast(
                    AlarmActivity.this, 0, AlarmIntent, 0);
            AlmMgr.cancel(Sender);
            finish();

        }

    });

当我运行它时应用程序崩溃了。 有好心人帮忙吗?

最佳答案

我认为在取消它之前,您需要使用未决 Intent 调用 alarmManager 的 set 方法,例如

//Set an alrm for 5 seconds from now
AlmMgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000 ,Sender)
//Do stuff
...
//Cancel alarm
AlmMgr.cancel(Sender)

如果没有看到您的 LogCat 输出,很难确定,但我猜想在设置警报之前尝试取消警报会引发异常。根据 API,.cancel() 将删除警报,因此它永远不会响起:

http://developer.android.com/reference/android/app/AlarmManager.html#cancel(android.app.PendingIntent )

如果它已经在响起,我无法确认它会停止并取消警报,但你应该能够很容易地检查这一点。

关于android - 关闭和删除警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396285/

相关文章:

android - 如何处理 Ion(android 库)没有互联网连接?

java - DialogFragment 上的 onClickListener

java - 位置返回 NULL

android - intel XDK 如何手动定义权限

android - 当我的应用重新聚焦时,如何更改导航栏图标颜色?

java - 在 Android Studio 中保护密码和 URL

Java 中 TextView 的 Android layout_gravity

android - 无法更改 fragment SupportMapFragment 的容器 ID

android - 通知通过旧的 Intent Extras

android - 应用强制关闭 viewPager.setAdapter(adapter)