Android Intent with Cordova – Nueva instancia de aplicación lanzada para cada recurso compartido. Debe ser solo uno
Quiero compartir URL de otras aplicaciones a la mía.
Estoy utilizando este Plugin Phonegap para implementar las intenciones:
- Android y Java: uso de runnable
- Android Viewpager que guarda datos y vistas
- Guardar dibujo en disco usando Parcelable
- Problemas con appwidget appWidgetIds (instancias reales y fantasmas de widget)
- Android - Cómo iniciar una nueva actividad desde una instancia
Https://github.com/chrisekelley/olutindo-app/tree/master/plugins/com.borismus.webintent
Los intentos funcionan, pero cada vez que comparto una intención de otra aplicación, se inicia una nueva instancia de mi aplicación, pero quiero usar una instancia. Si la aplicación ya está abierta, debe ser reinicializada y puesta al frente o reiniciada con la inicialización de intenciones compartidas.
Intenté android: launchMode = "singleTop", pero el mismo comportamiento ocurre, la aplicación se abriría varias veces.
Mi entrada de manifiesto:
<activity android:configChanges="orientation|keyboardHidden|screenSize" android:name=".StartActivity" android:label="@string/app_name" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="android.intent.category.BROWSABLE"></category> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity>
Éstas no son inicialización en mi MainActivity porque las intenciones se inicializarían desde javascript con una función propia (ver plugin de PG arriba).
Edit: He intentado usar android: launchMode = "singleInstance". Ahora en cada solicitud de compartir mi aplicación sería llevado a la parte superior, pero la intención no se inicializa. ¿Cómo puedo inicializar de nuevo la solicitud de intención de entrada con cordova, si la aplicación ya está iniciada?
¡Gracias!
- Error de "no incluir instancia de tipo" al llamar al método de otra clase en Android
- ¿Hay de todos modos para intercambiar o reordenar fragmento BackStack entrada?
- Finalizar toda la instancia de actividad particular
- Android: ¿Cómo ignorar o desactivar savedInstanceState?
- NullPointerException en onRestoreInstanceState
- Evitar una nueva instancia de actividad después de hacer clic en la notificación
No estoy seguro de cómo solucionar esto. Pero estoy bastante seguro de que incluso si su código es launchMode="singleInstance"
o singleTask, el sistema operativo abrirá una Instancia diferente para cada intention.action.
La única forma de solución que encontré es la creación de una actividad vacía que llama a su actividad con una única intention.action.
final Intent myIntent = new Intent(this, MainActivity.class); myIntent.setAction("android.intent.action.MAIN"); //myIntent.setAction(Intent.ACTION_MAIN); startActivity(myIntent);
Usted puede hacer un servicio de escucha. Cuando intenta compartir el servicio se lanzan y se abre su actividad si una intent.action aways.