繁体   English   中英

当应用程序在Android中运行或不运行时,将推送通知内容显示到警报对话框中

[英]To Show Push Notification content into the Alert Dialog when application is either running or not in android

我是Android新手。

目前,我已将GCM功能集成到我的Android应用程序中。 我从第三方服务器应用程序中得到了推送通知。

但现在我的问题是每当推送通知出现时,它会显示在Notification Bar区域,当我点击该通知时它会按预期消失。

但我想要的功能是,当用户点击通知栏中的推送通知时,它会显示弹出窗口并在弹出窗口中显示通知内容。

我希望这个功能是应用程序运行与否。

即如果应用程序未运行,则通过单击通知,它将自动在应用程序的第一个活动上显示警报。 如果应用程序已在运行,那么它将显示应用程序当前活动的警告框。

目前我的申请有7项活动。

尝试在android中使用Pending Intent,将activity作为Dialog主题。 该链接将帮助您如何使用待定意图帮助

收到通知时,使用此代码在GCMIntentService中生成通知

private static void generateNotification(Context context, String message) {
    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);

    String title = context.getString(R.string.app_name);
                                                 //activity which you want to open
    Intent notificationIntent = new Intent(context, YOUR_ACTIVITY.class);
    // set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
   notificationIntent.putExtra("m", message);
    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);      

}

如果您按照GCM使用MyGcmListenerService,那么您的代码应该类似于:

private void sendNotification(String title, String body)
{
    Context context = getBaseContext();

    Intent notificationIntent = new Intent(context, <the-activity-you-need-to-call>.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.mipmap.ic_l)
            .setContentTitle(title)
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setVibrate(new long[] { 1000, 1000})
            .setContentText(body)
            .setContentIntent(pendingIntent)
            .setAutoCancel(true);

    NotificationManager mNotificationManager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);

    mNotificationManager.notify(MESSAGE_NOTIFICATION_ID, mBuilder.build());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM