Compartir algo con una aplicación phonegap


¿Hay alguna forma de registrar una aplicación phonegap para que aparezca en el menú de aplicaciones para compartir?

introduzca la descripción de la imagen aquí

Author: karacas, 2013-06-04

3 answers

Para aparecer en esta lista tienes que modificar el AndroidManifest.archivo xml y agregue las siguientes líneas bajo su actividad:

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

Esto hará que su aplicación aparezca en la lista. Ahora creo que probablemente también quieras saber cómo manejar esto en tu código. Cuando otra aplicación va a compartir algún texto con usted, va a iniciar su aplicación con un Android "Intent". Para poder usar Intents, necesitas un plugin de PhoneGap. Creo que WebIntent te conviene. Esto sería ser el código :

// deviceready is PhoneGap's init event
document.addEventListener('deviceready', function () {
  window.plugins.webintent.getExtra(WebIntent.EXTRA\_TEXT, function (url) {
    // url is the value of EXTRA_TEXT 
  }, function() {
    // There was no extra supplied.
  });
});

Más información sobre WebIntent aquí: http://smus.com/android-phonegap-plugins /

Nota: No creo que puedas hacer esto con PhoneGap Build... solo puedes usar plugins soportados, y no puedes cambiar el AndroidManifest.archivo xml que mucho. Probablemente tendrás que ir por la ruta de Córdoba y construir todo en tu máquina.


Editar : hay algunas personas preguntando cómo hacer esto en iOS. Hay dos pasos para hacer esto :

  1. Asocie su aplicación con las asociaciones de tipo de archivo correctas agregando la información relevante en su información.plist. Esta respuesta explica cómo hacerlo : ¿Cómo asocio tipos de archivos con una aplicación para iPhone?. Esto hará que su aplicación aparezca en la lista, pero su aplicación no recibirá los datos todavía.
  2. Su aplicación ahora se iniciará con nuevos parámetros. Ahora tiene que ser capaz de leer estos parámetros. Compruebe esta pregunta / respuesta en TAN, hace exactamente eso: Cómo pasar argumentos a la aplicación construida en Phonegap
 42
Author: Sébastien Nussbaumer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:20

Logré que la URL del archivo se compartiera; usando EXTRA_STREAM insted de EXTRA_TEXT dentro de deviceready, modificando Webintent.java, y la adición de un filtro de intención en AndroidMenifest.XML.

Así es como se ve mi actividad principal:

    <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 android:label="@string/app_name">
            <data android:mimeType="*/*" />
            <action android:name="android.intent.action.SEND" />                
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Encontré que el plugin tenía un error para la parte EXTRA_STREAM, así que modifiqué mi javafile de acuerdo con esto:

Https://github.com/Initsogar/cordova-webintent/issues/23

También dentro de mi archivo js, tengo que llamar al función como esta: (uso de EXTRA_STREAM en lugar de EXTRA_TEXT)

    window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_STREAM, function (url) {
        // url is the value of EXTRA_STREAM 
        alert(url);
      }, function() {
        // There was no extra supplied.
        alert("no url");
      });

Y obtengo el URI del archivo.

 4
Author: Moinkhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-09 14:46:11

@ ericpeters0n: Al usar aplicaciones de iPhone y Compartir, ¿de dónde viene esta lista de aplicaciones? Por ejemplo, cuando estoy en la Galería de Fotos y comparto, la lista incluye Mensaje, Correo, Twitter, Facebook, Flickr. ¿Cómo se registraron estas aplicaciones para aparecer en esta lista?

 1
Author: Marius George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-14 09:58:11