Действие при нажатии на push-уведомление в центре уведомлений

#android #push #google-cloud-messaging

#Android #толкать #google-облако-обмен сообщениями

Вопрос:

Я тестирую службу GCM для реализации push-уведомлений в моем приложении. Когда я получаю уведомление, оно отображается в центре уведомлений. Теперь, когда я нажимаю на него, открывается приложение, и я хотел бы загрузить URL-адрес в веб-представление (URL передается в полезной нагрузке). Есть идеи о том, как это сделать?

Комментарии:

1. поместите URL-адрес в пакет намерений, а затем получите его из пакета при запуске действия

Ответ №1:

Предположим, что у вас есть класс intent service, который обрабатывает входящее сообщение GCM (как в официальной демонстрации).

Предположим, что вы передаете url с вашего сервера в вызываемом параметре url .

Когда вы создаете намерение, которое запускает действие, вы добавляете URL-адрес в дополнительные возможности намерения.

 protected void onHandleIntent(Intent intent) {
    Bundle extras = intent.getExtras();
    String url = (String) extras.get("url");
    String msg = (String) extras.get("message");
    Intent activityIntent = new Intent(this, DemoActivity.class);
    activityIntent.putExtra ("url",url);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            activityIntent, PendingIntent.FLAG_CANCEL_CURRENT);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.ic_stat_gcm)
    .setContentTitle("GCM Notification")
    .setStyle(new NotificationCompat.BigTextStyle()
    .bigText(msg))
    .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
  

Когда действие запущено, вы можете получить URL-адрес из дополнительных элементов намерения и загрузить его в свой веб-просмотр.

Комментарии:

1. Я получаю, что метод putExtra(строка, строка) не определен для типа PendingIntent в contentIntent.putExtra («url», url);

2. @Enzoses Извините за это. putExtra должно выполняться для намерения, содержащегося в PendingIntent. Смотрите обновленный ответ.