Pregunta

Desafortunadamente, no pude encontrar una resolución a este problema en otras publicaciones de Stackoverflow, así que me disculpo de antemano por volver a publicar esta pregunta. Esencialmente, tengo un AppWidget que crea una notificación. Quiero que el usuario haga clic en la notificación para iniciar una actividad. El AppWidget y la actividad están en el mismo APK.

El siguiente código está todo en el AppWidget. Al hacer clic en la notificación, transmite una intención personalizada que recibe el AppWidget.

El problema es que la actividad no parece lanzar, a pesar de que LogCat demuestra que la intención personalizada se ha transmitido. La única pista es el mensaje LogCat reiterado en el título de la publicación.

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Constants.BROWSER_INTENT)) {
        launchActivity(context, R.layout.appwidget, R.id.launch_button, Activity.class);
    }
    super.onReceive(context, intent);
}


private void displayNotification(Context context, String ticker, String title, String msg) {
    Intent intent = new Intent(context, ThisWidget.class);
    intent.setAction(Constants.BROWSER_INTENT); 
    PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.icon, ticker, System.currentTimeMillis());

    notification.setLatestEventInfo(context, title, msg, pending);
    notificationManager.notify(1, notification);
}

Algunas notas:

  • Al presionar un botón para ejecutar LaunchActivity () funciona (inicia la actividad)
  • LaunchActivity utiliza intent.flag_activity_new_task según lo recomendado por la documentación del ciclo de vida de Android

¿Alguien ha resuelto este problema al lanzar una actividad desde una prensa de notificación?

¿Fue útil?

Solución

Er, figuras, respondí mi propia pregunta solo unos minutos después de publicarla. Supongo que estaba complicando demasiado la implementación utilizando una acción de intención. Cambié estas líneas:

   Intent intent = new Intent(context, ThisWidget.class);
   intent.setAction(Constants.BROWSER_INTENT); 
   PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

a esto:

   Intent intent = new Intent(context, Activity.class);
   PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

Y funcionó.

Perdón por la publicación falsa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top