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?
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 :
- 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.
- 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
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.
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?
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