清除 Android 的本地通知 cordova 插件

Posted

技术标签:

【中文标题】清除 Android 的本地通知 cordova 插件【英文标题】:Clear Android's Local Notifications cordova plugin 【发布时间】:2012-12-10 09:21:31 【问题描述】:

我使用Phonegap's localNotification Plugin for android 显示特定日期的通知。

我使用 Cordova [2.2] & 我使用了 Cordova 的upgrading tutorial 来修改插件。

显示了通知,但是当我点击它时,应用程序没有打开并且通知没有被清除。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

在 AlarmReceiver.java 中,大约第 70 行,您将看到以下代码行:

    // Construct the notification and notificationManager objects
    final NotificationManager notificationMgr = (NotificationManager) systemService;
    final Notification notification = new Notification(R.drawable.ic_launcher, tickerText,
            System.currentTimeMillis());
    final PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.vibrate = new long[]  0, 100, 200, 300 ;
    notification.setLatestEventInfo(context, notificationTitle, notificationSubText, contentIntent);

添加适当的行以匹配以下内容:

    // Construct the notification and notificationManager objects
    final NotificationManager notificationMgr = (NotificationManager) systemService;
    final Notification notification = new Notification(R.drawable.ic_launcher, tickerText,
            System.currentTimeMillis());
    Intent notificationIntent = new Intent(context, CLASS_TO_OPEN.class);
    final PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.vibrate = new long[]  0, 100, 200, 300 ;
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notification.setLatestEventInfo(context, notificationTitle, notificationSubText, contentIntent);

其中 CLASS_TO_OPEN 是您希望在按下通知时打开的类的名称。

编辑: 澄清一下,为了让通知在按下时打开一个活动,您需要将此活动与通知对象相关联。这是通过创建一个Intent,指定要打开的活动(如在NAME_OF_ACTIVITY.class 中)作为第二个参数,并将这个Intent 作为第三个参数传递给PendingIntent 来完成的。这又通过setLatestEventInfo 方法传递给通知对象。

在上面的代码 sn-p 中,这一切都是为您完成的,除了指定要打开的活动,因为这将特定于您的项目。除非您添加了其他活动,否则 PhoneGap/Cordova 项目包含一个活动,即打开 Cordova WebView 的活动。如果您不知道或不记得项目中此活动的名称,可以通过以下方式在 Package Explorer(在 Eclipse 中)中找到它:

src>NAME_OF_YOUR_PACKAGE>NameOfActivity.java

要确保这是类的名称,请使用文本编辑器打开 java 文件,您将看到 NAME_OF_ACTIVITY extends DroidGap。将上述 sn-p 中的 CLASS_TO_OPEN 替换为您的活动名称(必须包含 .class 文件扩展名)。

【讨论】:

非常感谢,当我点击它时,通知现在从状态栏中消失了,但我没有打开任何东西。

以上是关于清除 Android 的本地通知 cordova 插件的主要内容,如果未能解决你的问题,请参考以下文章

为没有 Cordova 插件的 Android PWA 发送本地推送通知

PhoneGap Android 中每天重复的本地通知

Apache Cordova 本地通知插件图标

在 iOS 中使用 PushPlugin for Cordova 清除单个通知

Cordova Local Notification 为 iOS 和 Android 播放本地声音

适用于 Android 的 Phonegap 本地通知插件