unity studio seguridad restaurar recuperar puedo proyecto para icono google exportar entrar copia celular ajustes android android-intent android-activity unity3d resume

studio - restaurar copia de seguridad android google drive



RestauraciĆ³n de la aplicaciĆ³n Android Unity3d con otra actividad en la parte superior (2)

La solución resultó ser bastante simple, pero no tan obvia.

Resultó que la configuración de AndroidManifest.xml que Unity está produciendo por defecto está causando este problema. Para la actividad principal que se inicia desde el iniciador, se definen los siguientes parámetros (tomados de la aplicación decompilada):

<activity android:alwaysRetainTaskState="true" android:clearTaskOnLaunch="true" android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerNativeActivity" android:screenOrientation="fullSensor" launchMode="singleTask"> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true"/> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> </intent-filter> </activity>

El comportamiento problemático está siendo causado por estos 2 parámetros:

android:clearTaskOnLaunch="true" android:launchMode="singleTask"

Cuando el yo los cambio a:

android:clearTaskOnLaunch="false" android:launchMode="standard"

Luego, la aplicación se reanuda correctamente desde el iniciador.

Los parámetros correctos deben establecerse de la siguiente manera:

<activity android:alwaysRetainTaskState="true" android:clearTaskOnLaunch="false" android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode="standard" android:name="com.unity3d.player.UnityPlayerNativeActivity" android:screenOrientation="fullSensor" launchMode="standard"> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true"/> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> </intent-filter> </activity>

Nota: Si bien puedo establecer el valor de android:clearTaskOnLaunch="false" para esta actividad explícitamente, launchMode parámetro launchMode y lo configurará como "singleTask" . Me las arreglé para cambiar y verificar descompilando la aplicación y reconstruyendo a partir de estos recursos modificados. Me pregunto si hay alguna manera elegante de establecer este valor.

Necesito resolver el siguiente problema:

Desde UnityPlayerNativeActivity estoy comenzando una actividad estándar de Android (puede ser la mía, puede ser con un anuncio de la red publicitaria - nevermind). Cuando el juego se oculta con esta actividad en la parte superior (no en Unity) al presionar el botón de home , como usuario tengo dos formas de restaurarlo:

  • desde la pantalla de Recently used apps : la aplicación se está restaurando al mismo estado, cuando se redujo al mínimo (eso es lo que espero que ocurra);
  • desde el iniciador, lo que hace que la actividad UnityPlayerNativeActivity del juego se restaure con la pérdida de todas las demás actividades, que se han abierto encima.

Estas actividades se pierden de alguna manera (de una manera que no sé exactamente, qué ha sucedido con ellas). La lógica de mi juego depende del resultado de los procesos que suceden allí, es decir. Necesito saber que esta actividad en particular se ha eliminado de alguna manera específica (por ejemplo, dar una devolución de llamada).

¿Sabes cómo puedo recuperar esta actividad de Unity desde el iniciador con todas las actividades que se encuentran arriba, tal como estaba mientras lo minimizaba?

Quiero entender la diferencia entre las formas de restaurar la aplicación desde la Recently used screen y el iniciador. Supongo que está relacionado con la sección filtro de intención dentro del archivo AndroidManifest.xml , que se incluye dentro de la entrada UnityPlayerNativeActivity .