#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. Смотрите обновленный ответ.