Mam aplikację, która jest w zasadzie powiadomieniem o wyświetleniu i GCM. Chcę osiągnąć następujące rzeczy: jeśli użytkownik jest w aplikacji i otrzymuje powiadomienie, po kliknięciu powiadomienia chcę, aby przeglądarka internetowa załadowała adres URL podany w powiadomieniu.Wysyłaj transmisję po powiadomieniu kliknij
Próbuję to osiągnąć, używając odbiornika transmisji, ale to nie działa.
dynamicznie zarejestrować słuchawkę w główną działalność:
private void registerNotificationReceiver() {
final IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_LOAD_URL_FROM_NOTIFICATION);
Log.i(TAG, "registerNotificationReceiver()");
this.receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "notification received");
}
};
super.registerReceiver(this.receiver, filter);
}
A w GCM Listener Używam PendingIntent.getBroadast():
final Intent broadcastIntent = new Intent(MainActivity.ACTION_LOAD_URL_FROM_NOTIFICATION);
PendingIntent intent = PendingIntent.getBroadcast(getApplicationContext(), 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(intent);
notification = notificationBuilder.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
Nie rozumiem dlaczego w onReceive klasa MainActivity nie jest wywoływana. Komunikat "Otrzymano powiadomienie" nie jest wyświetlany. Czy możesz mi pomóc? Dziękuję :)
Tak, to działa teraz, gdy odbiornik jest zdefiniowana w manifeście. Dziękuję :) Aby osiągnąć mój cel, musiałem użyć innego odbiornika w MainActivity, gdzie ładuję adres URL. Emisja do niego jest wysyłana z pierwszego odbiorcy (tego, który zdefiniowałem w manifeście). Działa teraz, ale nie lubię tego podejścia. Wygląda mi to na złą praktykę ... – definera
to jest * obowiązkowa * praktyka ... God google mówi tak ... – eduyayo