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:

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!

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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.