android - API 17 - Android 通知在不被点击的情况下启动 Activity

标签 android notifications

我在 API 17 上发布了一个通知,并且在没有点击通知的情况下触发了未决 Intent 。

这是我在发布通知时使用的代码,代码的哪一部分触发了此行为,我该如何解决?

 public static void notifyIncomingMessage(Context context, ChatMessage message, String name) throws JSONException {
        NotificationManager mNotificationManager = (NotificationManager)
                context.getSystemService(Context.NOTIFICATION_SERVICE);

        Intent intent = new Intent(context, ChatMessageInterceptor.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        PendingIntent contentIntent = PendingIntent.getActivity(context, GcmIntentService.NOTIFICATION_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        String text = messageText(message, context);

        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(context)
                        .setSmallIcon(R.drawable.ic_small_notification)
                        .setContentTitle(name == null ? context.getString(R.string.app_name) : name)
                        .setStyle(new NotificationCompat.BigTextStyle()
                                .bigText(text))
                        .setContentText(text)
                        .setLargeIcon(getBitmapIcon(context))
                        .setContentIntent(contentIntent)
                        .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                        .setAutoCancel(true)
                        .setFullScreenIntent(contentIntent, true);
        mNotificationManager.notify(GcmIntentService.NOTIFICATION_ID, mBuilder.build());
    }

最佳答案

主要原因是 setFullScreenIntent() 方法,android 的文档告诉 [developer.android.com][1] 所以不要使用

    mBuilder.setFullScreenIntent(contentIntent, true);

而只是使用

    mBuilder.setPriority(Notification.PRIORITY_HIGH)
    .setDefaults(Notification.DEFAULT_ALL);

这将有助于默认显示提醒通知。 即使对于 setDefaults(),Notification.DEFAULT_ALL 也不是必需的,但很好用。

这很清楚,对我有用。

关于android - API 17 - Android 通知在不被点击的情况下启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626662/

相关文章:

android - Galaxy S4 从 MDPI 中获取值?

android - Jetpack Compose UI - 在 AlertDialog 内单击时按钮宽度发生变化

android - 安装 Estimote SDK for Android

java - 深度链接无法通过 Intent android 工作

c++ - C++ 中的通知中心

android - 尝试在空对象上调用接口(interface)方法 'android.media.session.ISessionController android.media.session.ISession.getController()'

ios - 当应用程序未运行时处理推送通知(应用程序被杀死)

整个应用程序中的 IOS 可达性以及仅在 View 加载时的可达性

java - 显示来自 listview onitemclick Android Studio 的详细 Firebase 数据

ios - 在 Swift 中更改本地通知的文本