将Cordova与Android一起使用.如何显示后台通知



我正在尝试使用Android显示通知。 以下代码不显示任何内容。 我错过了什么吗? 没有抛出错误并且代码执行,但我没有看到任何对话框或任何指示通知的内容。

NotificationManager mNotificationManager = (NotificationManager) 
              this.getSystemService(android.content.Context.NOTIFICATION_SERVICE); 

      Notification n  = new Notification.Builder(this.getApplicationContext())
        .setContentTitle("Socket Message Received")
        .setContentText("My Application")
        .setSmallIcon(com.mypackage.app.R.drawable.icon)
        .build();
      mNotificationManager.notify(5, n);

或者当我直接从科尔多瓦插件调用它时

NotificationManager mNotificationManager = (NotificationManager) 
                  cordova.getActivity().getApplicationContext().getSystemService(android.content.Context.NOTIFICATION_SERVICE); 

          Notification n  = new Notification.Builder(cordova.getActivity().getApplicationContext())
            .setContentTitle("Socket Message Received")
            .setContentText("My Application")
            .setSmallIcon(com.mypackage.app.R.drawable.icon)
            .build();
          mNotificationManager.notify(CM_NOTIFICATION_ID.hashCode(), n);

那么有谁知道为什么这不会显示任何错误?

试试这个:

private void generateNotification(Context context, String message) {
int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
String appname = context.getResources().getString(R.string.app_name);
NotificationManager notificationManager = (NotificationManager) context
    .getSystemService(Context.NOTIFICATION_SERVICE);
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
Notification notification;
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
    new Intent(context, myactivity.class), 0);
// To support 2.3 os, we use "Notification" class and 3.0+ os will use
// "NotificationCompat.Builder" class.
if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB) {
notification = new Notification(icon, message, 0);
notification.setLatestEventInfo(context, appname, message,
        contentIntent);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notificationManager.notify((int) when, notification);
} else {
NotificationCompat.Builder builder = new NotificationCompat.Builder(
        context);
notification = builder.setContentIntent(contentIntent)
        .setSmallIcon(icon).setTicker(appname).setWhen(0)
        .setAutoCancel(true).setContentTitle(appname)
        .setContentText(message).build();
notificationManager.notify((int) when , notification);
}
}

希望这有帮助。这对我有用。

最新更新