我正在由 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/