Intent.getExtras () devuelve siempre null
Estoy tratando de ejecutar una actividad a través de una notificación y evento onCreate
Me gustaría "redirigir". A esto agregue un pensamiento sobre la información en la clase Intent
. Una característica importante es que la clase que genera la notificación se realiza a través de un servicio. getApplicationContext
el contexto del método getApplicationContext
proporcionado por la clase android.app.Application
. Cada vez que llamo al método getExtras()
devuelve null
. ¿Qué estoy haciendo mal?
public class OXAppUpdateHandler { private void addNotification(Context context, int iconID, CharSequence tickerText, CharSequence title, CharSequence content) { CharSequence notificationTicket = tickerText; CharSequence notificationTitle = title; CharSequence notificationContent = content; long when = System.currentTimeMillis(); Intent intent = new Intent(context, MainActivity_.class); intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtra(OPEN_UPDATE_ACTIVITY_KEY, 1); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); NotificationManager notificationManager = (NotificationManager) context.getSystemService( Context.NOTIFICATION_SERVICE); Notification notification = new Notification(iconID, notificationTicket, when); notification.setLatestEventInfo(context, notificationTitle, notificationContent, pendingIntent); notificationManager.notify(NOTIFICATION_ID, notification); } public static boolean isUpdateStart(Intent intent) { Bundle bundle = intent.getExtras(); boolean result = bundle != null && bundle.containsKey(OPEN_UPDATE_ACTIVITY_KEY); if (result) { bundle.remove(OPEN_UPDATE_ACTIVITY_KEY); } return result; } } @EActivity(R.layout.activity_main) public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (OXAppUpdateHandler.isUpdateStart(getIntent())) { startActivity(new Intent(this, UpdateActivity_.class)); } } }
- Borrar actividad back stack
- Envío de extras con una intención devuelta por getLaunchIntentForPackage () a la actividad principal de otra aplicación
- Receptor Android BroadCast para vibración y silencio
- Cómo elegir sim a través de código en android
- Android: url abierta en el navegador externo causa un bucle infinito
- Diferencia entre el intento.setClass () y el intento.setComponent ()
- Android: Manejar el bloqueo de aplicaciones e iniciar una actividad particular
- ¿Cómo abrir un archivo sin conocer su extensión pero sabiendo su nombre completo?
- Android Intent Clear No funciona
- No se pudo administrar el error android.intent.package_ADDED y REMOVED al recuperar la ubicación mediante Fused Location API
- Cómo abrir la aplicación youtube desde la aplicación android
- No se puede obtener la imagen de la cámara con el selector de intenciones en 4.2.2 AVD
- Cómo cerrar todas las actividades y salir de una aplicación
Voy a asomarse por la ventana y adivinar que su problema está aquí:
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
Está pasando la intent
de getActivity()
y espera que obtendrá un PendingIntent
que coincida con su Intent
e incluye sus extras. Desafortunadamente, si ya hay un PendingIntent
flotando en el sistema que coincide con su Intent
( sin tener en cuenta sus extras de Intent
), entonces getActivity()
le devolverá ese PendingIntent
en PendingIntent
lugar.
Para ver si este es el problema, prueba esto:
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Esto dice que si ya hay un PendingIntent
que coincida con su Intent
en algún lugar del sistema que debe reemplazar los extras con los de su parámetro de intent
.
(1) Compruebe aquí para asegurarse de que está utilizando los extras de put / get correctamente, ya que no veo el código en el que está agregando datos a la intención.
(2) Parece que no está llamando a obtener la intención y obtener más y, como resultado, no realmente conseguir nada del paquete (suponiendo que la información extists). Si está comprobando un valor booleano, debe obtener los datos que coloca en el paquete de la siguiente manera:
Bundle bundle = getIntent().getExtras(); if (bundle.getBooleanExtra("WHATEVER"){ //whatever you want to do in here }
- IllegalArgumentException en Bitmap.getPixels ()
- Phonegap 3.3 Eclipse: Proyecto -CordovaLib falta las propiedades de Android