android - 当应用程序不在后台或前台时,无法将通知推送到通知管理器

标签 android notifications

我正在开发一个 Android 应用程序,如果应用程序不在后台但无法启动,我想将通知推送到 NotificationManager。

当应用程序处于打开状态时。

当应用程序在后台工作时

当应用程序不在后台或前台时 - 不工作

 NotificationManager notificationMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);NotificationCompat.Builder notificationMsg = new NotificationCompat.Builder(ctx);
         notificationMsg.setContentTitle(notification.getTitle());
         notificationMsg.setTicker(notification.getTitle());
         notificationMsg.setPriority(notification.getPriority());
         notificationMsg.setSmallIcon(R.drawable.foo_icon);
         notificationMsg.setStyle(new NotificationCompat.BigTextStyle().bigText(notification.getDescription()));
         notificationMsg.setContentText(notification.getDescription());
         if (notificationIcon != null)
         {
             notificationMsg.setLargeIcon(notificationIcon);
         }
         else
         {
            // notificationMsg.setLargeIcon(R.drawable.foo_icon);
         }
        notificationMsg.setColor(ctx.getResources().getColor(R.color._9c9c9c));
        notificationMsg.setLights(R.color.green_normal,5000,5000);
        notificationMsg.setVibrate(new long[]{100,250,100,500});

        notificationMsg.setAutoCancel(true);
        if (( notification.getGroupName() != null ) &&( notification.getGroupValue() != null))
        {
            notificationMsg.setGroup(notification.getGroupName()+notification.getGroupValue());
        }
        /* Add Actions to Notification  */
        addActionsToNotificationWindow(notificationMsg,notification,ctx);
        int reqCode = Math.abs((int) System.currentTimeMillis());
        PendingIntent contentIntent = PendingIntent.getActivity(ctx, reqCode, targetIntent, PendingIntent.FLAG_CANCEL_CURRENT);
        notificationMsg.setContentIntent(contentIntent);

        /* Display notification*/
        notifyMgr.notify(notification.getId(),notificationMsg.build()); 

我正在使用上面的代码通知通知管理器并在 Android Manifest 文件中使用以下权限

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.foo"
    android:versionCode="1"
    android:versionName="0.1" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />
    <permission
        android:name="com.disha.quickride.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <permission
        android:name="com.disha.quickride.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.disha.quickride.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.disha.quickride.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.SEND" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />   

最佳答案

  1. int reqCode = Math.abs((int) System.currentTimeMillis());

System.currentTimeMillis()long

尝试设置任何常量 int

  1. 另外,你能给我们展示一下 targetIntent 吗?
  2. 您是否从服务生成通知?
  3. 同时显示您的 list
  4. 你可以在这里看到如何从服务生成通知 http://startandroid.ru/ru/uroki/vse-uroki-spiskom/164-urok-99-service-uvedomlenija-notifications

关于android - 当应用程序不在后台或前台时,无法将通知推送到通知管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394488/

相关文章:

android - Facebook Like 按钮重定向到 android 中的 facebook 站点

android - 从付费更改为免费时如何以编程方式查看用户是否已为我的应用付费

java - 公共(public)静态运行时增量更改 - android

android - 如何防止 Activity 重复午餐

android - 如何使通知恢复而不是重新创建 Activity ?

android - Android如何在android本地通知中添加视频和GIF?

java - 如何为所有 Activity 建立一个共享线程?

javascript - 服务中的Android webview?

Azure:当网络故障时收到通知

ios - 如何从丰富的通知操作将数据发布到 firestore?