Reanudar mi solicitud de la misma manera que se reanudó de la historia

Estoy escribiendo un SDK para ser utilizado en la aplicación de alojamiento. Mi SDK crea una notificación que necesita reanudar la aplicación, de la misma manera que presiona el botón de tareas y selecciona la aplicación, o presiona larga en el botón Inicio y selecciona tu aplicación.

Esto es lo que he estado tratando de hacer:

PackageManager packageManager = context.getPackageManager(); intent = packageManager.getLaunchIntentForPackage(context.getPackageName()); intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context, 10, intent, flags); Notification notification = new NotificationCompat.Builder(context). setContentIntent(pendingIntent). ... build(); getNotificationManager().notify(NOTIFICATION_ID, notification); 

He estado probando esto en la aplicación de acogida con una actividad de lanzador con el modo de almuerzo "predeterminado" (no se ha establecido el modo de lanzamiento en el manifiesto) y mi sdk también tiene 1 actividad con el modo almuerzo "singleTask".

  1. Así que almuerzo la aplicación
  2. Inicie mi actividad SDK que dispara una notificación de prueba en el método onCreat.
  3. Presiono a casa
  4. Hago clic en la notificación.

Después de hacer esos pasos espero que se devuelva a mi actividad, pero en su lugar se abre otra instancia de la actividad de inicio de host. ¿Qué me estoy perdiendo? ¿Cómo puedo hacer que esto funcione?

Si desea reanudar desde donde se detiene , quite el distintivo " NEW_TASK ". No hará nueva tarea. Espero que lo encuentre útil en su tarea.

Según su requisito la aplicación del anfitrión necesita fijar " singleTop " modo de lanzamiento en la actividad del lanzador y de su SDK usted no puede fijarlo . De alguna manera usted necesita decir a la aplicación de acogida para establecer este indicador.

Una vez que haya establecido el modo de lanzamiento "singleTop", recibirá una nueva intención invalidando el método onNewIntent () y su actividad estará en el mismo estado que el anterior.

En su archivo AndroidManifest.xml , vaya a la declaración de su actividad principal y use android:launchMode="singleTask" como esto:

 <activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

De esta manera, si la tarea ya se está ejecutando en segundo plano, el sistema la pondrá en primer plano dejando que el usuario continúe lo que estaba haciendo antes de que la actividad se haya puesto en segundo plano.

  • NativeActivity no termina
  • ¿Cómo pasar una matriz 2D de doble entre las actividades?
  • Pasar datos de búsqueda a la actividad de búsqueda
  • Requerir una contraseña antes de deshabilitar la aplicación como administrador en Android
  • ¿Cómo pasar una variable de Actividad a Fragmento y devolverla?
  • Cómo "destruir" varias actividades de Android al mismo tiempo
  • Relación entre android: noHistory y android: finishOnTaskLaunch
  • Indicador de configuración en onSaveInstanceState () para determinar tipo de salida en onDestroy ()
  • Android: Duplicación de fragmentos al utilizar el Administrador de fragmentos de soporte
  • Enviar datos a la actividad que se está ejecutando en segundo plano
  • Android: eliminar la actividad del sabor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.