Android 4.1.1 Build Stack para Actividad al recibir una Notificación con URI

Nuestra aplicación tiene diferentes notificaciones que pueden abrir diferentes Actividades. Así que creamos el esquema URI para hacerlo. Se reciben las notificaciones y se abren las actividades correctas. Creo la pila para la navegación apropiada con el código siguiente:

Intent intent = new Intent(Intent.ACTION_DEFAULT, Uri.parse(uri)); TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addNextIntentWithParentStack(intent); PendingIntent contentIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); NotificationManager mNotifM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Notification.Builder mBuilder = new Notification.Builder(context); mNotifM.notify(NotificationId.getID(), mBuilder.setStyle(new Notification.BigTextStyle(mBuilder) .bigText(bigText) .setBigContentTitle(title) .setSummaryText(summaryText)) .setContentTitle(title) .setSmallIcon(R.drawable.udechile_launcher) .setContentText(summaryText) .setAutoCancel(true) .setContentIntent(contentIntent) .setTicker(bigText) .build()); 

El problema es que en Android 4.1.1 ese código para recrear la pila no funciona correctamente. La única forma en que lo hice funcionar es hacer referencia a la clase en lugar de la uri al crear la intención:

 intent = new Intent(context, MatchDetail.class); 

El problema con esto es que tendré que hacer un Switch-Case para cada uri para poder crear la intención con cada clase. Esto derrota el propósito de la URI en primer lugar. También si en el futuro tengo que añadir un nuevo destino de Push no es sólo la adición de la URI en el AndroidManifest.xml Tengo que añadir un nuevo caso en el conmutador de la notificación Push Receiver.

¿Alguien sabe cómo hacer que esto funcione en Android 4.1.1 con URIs?

Extracto de Manifiesto:

 <activity android:name=".controller.MatchDetail" android:label="@string/title_activity_match_detail" android:parentActivityName=".controller.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".controller.MainActivity" /> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="scheme" android:host="base" android:path="/name" /> </intent-filter> </activity> 

One Solution collect form web for “Android 4.1.1 Build Stack para Actividad al recibir una Notificación con URI”

No he probado esto todavía, pero esto podría solucionar su problema:

 TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(Class.forName(intent.getComponent().getClassName())); stackBuilder.addNextIntent(intent); 

Si eso no funciona, intente esto:

 TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addNextIntent(context, Class.forName(intent.getComponent().getClassName())); stackBuilder.addNextIntent(intent); 

También uno más para probar:

 TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addNextIntentWithParentStack(new Intent(context, Class.forName(intent.getComponent().getClassName()))); 

Editar

Encontré una nueva forma de trabajar, con suerte

 TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(new ComponentName(context, Class.forName(intent.getComponent().getClassName()))); stackBuilder.addNextIntent(intent); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.