Enviar url a la aplicación androide iónica a través de webintents desde otra aplicación

Buscando una solución actualizada, ejecutando la última versión iónica 1.1.0 que usa Cordova 5.x. Tratando de ser capaz de navegar por un sitio web en cromo y enviar esa url a mi aplicación iónica android utilizando la intención web. Mi aplicación compila y se ejecuta, sin embargo, cuando intento utilizar el recurso compartido de cromo (o cualquier otra aplicación) y elegir mi aplicación para compartir, mi aplicación se bloquea.

Primero intenté usar el complemento:

Plugin iónico añadir https://github.com/Initsogar/cordova-webintent

Y luego eliminado el complemento y también he intentado un tenedor más recientemente actualizado:

Plugin iónico agregar https://github.com/fluentstream/cordova-webintent

En mi archivo app.js me pongo el siguiente código:

.run(function($ionicPlatform, $rootScope, $ionicHistory, $state) { $ionicPlatform.ready(function() { window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_TEXT, function(url) { incomingURL = url; //alert(incomingURL); console.log(incomingURL); }, function() { incomingURL = false; //alert("no url"); console.log("no url"); }); }); }) 

También intenté:

 .run(function($ionicPlatform, $rootScope, $ionicHistory, $state) { $ionicPlatform.ready(function() { window.plugins.webintent.getUri(function(url) { if(url !== "") { alert(url);//url is the url the intent was launched with } }); }); }) 

En el archivo config.xml pondría:

 <plugin name="WebIntent" value="com.borismus.webintent.WebIntent"/> 

En el AndroidManifest.xml que pondría manualmente en:

 <activity android:name="ShareActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> 

La aplicación se ejecuta, pero cuando vaya a cromo y haga clic en el botón de compartir y, a continuación, elija mi aplicación, la aplicación se cierra el siguiente mensaje android aparece:

Desafortunadamente, MyAppName se ha detenido.

¿Alguien puede sugerir una solución para obtener la parte de la intención de trabajar con mi aplicación … o estoy olvidando algo y hacer algo mal.

¡Gracias!

Descubrí que el problema se debía a cómo configuré mi archivo AndroidManifest.xml.

Yo estaba usando una etiqueta de actividad extra, cuando debería haber incluido la intención en la actividad 1.

Por ejemplo yo tenía:

 <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize"> <intent-filter android:label="@string/launcher_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="ShareActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> 

Cuando debería haber tenido:

 <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize"> <intent-filter android:label="@string/launcher_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </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> 

Esta pregunta es un poco envejecida. Pero tuve un desafío más o menos similar. No tuve suerte con el plugin de WebIntent y por lo tanto desarrollé mi propio plugin para tratar con Intents en Android.

Puede consultar esto: https://github.com/napolitano/cordova-plugin-intent

Mientras que todavía estoy trabajando en este plugin para mis propios proyectos, es todavía casi usable y la documentación debe ser lo suficientemente bueno para conseguir un pie en la puerta.

Algunos antecedentes:

Para permitir que aplicaciones de terceros envíen contenido a tu aplicación, debes agregar un filtro de intenciones a tu MainActivity en AndroidManifest.xml.

 <intent-filter> <action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter> 

Mientras que usted puede hacer esto manualmente, esto tiene algunas desventajas – así que usted desea probablemente tener un gancho o algo similar. Si usted va al repositorio arriba, usted encontrará y ejemplo para esto.

Además del filtro de intenciones, actualmente necesitas un complemento que te permita acceder a la intención de cordova (que es importante para acceder al contenido enviado al inicio de la aplicación) y recibir notificaciones si se desencadena el evento onNewIntent , lo que sucede si El contenido se envía mientras la aplicación se está ejecutando.

Eso es exaclty lo que hace mi plugin. Te da acceso a la intención cordova y te permite manejar el evento onNewIntent .

Ejemplos:

 window.plugins.intent.getCordovaIntent(function (Intent) { console.log(Intent); }, function () { console.log('Error'); }); window.plugins.intent.setNewIntentHandler(function (Intent) { console.log(Intent); }); 

Recibirá un objeto de intención limitada como resultado de éxito. Esto puede ser procesado por su aplicación.

Ejemplo:

 { "action": "android.intent.action.SEND_MULTIPLE", "clipItems": [ { "uri": "file:///storage/emulated/0/Download/example-document.pdf" }, { "uri": "file:///storage/emulated/0/Download/example-archive.zip" } ], "flags": 390070273, "type": "*/*", "component": "ComponentInfo{com.example.droid/com.example.droid.MainActivity}", "extras": "Bundle[mParcelledData.dataSize=596]" } 

Si bien este ejemplo muestra realmente JSON, recibirá un objeto listo para usar.

Tenga en cuenta que desarrollar el complemento actualmente sólo para mis propias necesidades. Sin embargo, puede funcionar también para usted. Actualmente no se agregaron ejemplos angulares al README, pero creo que no debería ser un gran problema.

  • Ionic construir android error cuando descarga gradle
  • PhoneGap / Cordova error al agregar la plataforma Android?
  • Ionic, mantener el botón por encima del teclado en iOS
  • El teclado androide mueve las pestañas
  • Sonido personalizado mediante notificaciones de empuje iónico
  • Cordova APP - ¿Es posible mostrar la alimentación de la cámara en un contenedor?
  • Facebook Pixel Conversion (Facebook Ads) no actualizado en el marco de Ionic
  • Escotado infinito con marco iónico
  • Ionic / HTML5 - Entrada de teclado decimal?
  • Construir variantes con Ionic / Córdoba
  • Creación Ionic de Android: java.lang.IllegalStateException: buildToolsVersion no se especifica
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.