我是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());
}