7

我正在尝试将 Cordova 的状态栏通知插件添加到我的 Android 应用程序中,但它的代码出现错误。

这是有问题的代码:

  Notification noti = new Notification.Builder(context)
    .setContentTitle(contentTitle)
    .setContentText(contentText)
    .setSmallIcon(icon)
    .build();

错误在.build()Eclipse 告诉我:

“Notification.Builder 类型的 build() 方法未定义”

4

2 回答 2

13

我有相同的问题。看起来与 sdk 版本不匹配,现在已贬值的方法。

getNotification() 是自 API 11 build() 被添加到 API 16 以来调用的方法

如果你和我一样,你使用的是 < 16 的版本,所以使用 .getNotification() 代替。

我现在不会担心 API 16,但我敢打赌,如果我下载 16 并将我的目标设置为这样,build() 将起作用。

请让我知道这对你有没有用。

于 2012-07-25T01:33:42.437 回答
1

对我来说 .getNotification() 没有解决问题,因为我需要 API 10 及更高版本的解决方案。

我找到了处理它的方法。如果其他人有同样的问题,我建议这样做:

1) 浏览 StatusBarNotification 的说明(点击

2)修改StatusBarNotification.java

  • 添加

    私人通知通知;

    私有 PendingIntent 内容意图;

在 StatusBarNotification 类的底部,例如在 NotificationManager 声明之前

  • 修改 showNotification 方法

评论或删除:

导入android.app.Notification.Builder;

Notification noti = new Notification.Builder(context) .setContentTitle(contentTitle) .setContentText(contentText) .setSmallIcon(icon) .build();

而不是这部分,粘贴:

noti = new Notification(android.R.drawable.btn_star_big_on, contentText, System.currentTimeMillis() );
noti.flags = Notification.FLAG_AUTO_CANCEL;


Intent notificationIntent = new Intent(context, !yourMainActivityClass!.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent = notificationIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

noti.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
  • 改变 !yourMainActivityClass! 到你的班级
  • 在 index.html 中添加调用方法对于测试,您可以使用 JQM 按钮

    onclick='window.plugins.statusBarNotification.notify("把你的标题放在这里", "把你的消息放在这里");return false;'

我知道这个解决方案正在使用折旧的方法,但我花了很多时间让它工作,我没有看到 API 10 的另一个解决方案。如果有人有更好的想法,请与我分享;)

于 2012-08-16T16:04:01.560 回答