android - 当应用程序在前台运行时,在警报框中显示推送通知

标签 android push-notification google-cloud-messaging

我正在由 GCM 触发的我的 android 应用程序中进行推送通知。如果应用程序正在警告框中运行,我想显示通知,如果应用程序未运行意味着不在前台仅显示状态栏通知,您如何确定应用程序是否正在运行并且在前台?是这可以显示这样的通知。现在正在使用此代码显示状态栏推送通知

  NotificationManager notificationManager = (NotificationManager)
                context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification(icon, message, when);

        String title = context.getString(R.string.app_name);

         Intent notificationIntent = new Intent(context, BottomActivity.class);
        // set intent so it does not start a new activity
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
        notification.setLatestEventInfo(context, title, message, intent);
        notification.flags |= Notification.FLAG_AUTO_CANCEL;

        // Play default notification sound
        notification.defaults |= Notification.DEFAULT_SOUND;

        //notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "your_sound_file_name.mp3");

        // Vibrate if vibrate is enabled
        notification.defaults |= Notification.DEFAULT_VIBRATE;
        notificationManager.notify(0, notification); 

最佳答案

您可以创建一个新的 Activity 和主题作为 Dialog 并检查前台 Activity 。检查以下代码。

         ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> services = activityManager
                .getRunningTasks(Integer.MAX_VALUE);
        boolean isActivityFound = false;

        if (services.get(0).topActivity.getPackageName().toString()
                .equalsIgnoreCase(context.getPackageName().toString())) {
            isActivityFound = true;
        }

       if (isActivityFound) {
            resultIntent = new Intent(context, AlertDialogNotification.class);
            resultIntent.putExtra(EXTRA_ALERT_MESSAGE_BEAUTIFUL, "anyMessage");
            resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(resultIntent); 
        }

在 list 中将主题设置为 Activity 的对话框。希望能帮助到你。让我们知道您是否有问题。

关于android - 当应用程序在前台运行时,在警报框中显示推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15574014/

相关文章:

java - java android 每 5 秒扫描一次可用的无线网络

android - 如何在主/细节 Pane 布局中将共享元素 ImageView 从 ListView fragment 动画化到细节 View fragment

android - 有没有办法让每个 Activity 只有一个实例?

java - 更改 Arr 文件然后将其包含在 Android Studio 中

android - 检查 Google Play 服务以接收 Firebase 推送通知的最佳实践

android - 亚马逊SNS支持窗口桌面通知吗?

ios - 如何将 5 个以上的推送证书与 Parse 集成?

google-chrome - 在 ASP.NET 中获取 manifest.json GCM 推送通知的未经授权 401

php - 针对多个 registration_ids 时哪个 fcm 注册 id 失败

android - Pubnub 推送通知不适用于跨平台移动应用程序