Partager quelque chose à une application phonegap
Est-il possible d'enregistrer une application phonegap à apparaître dans le menu des applications à partager?
3 réponses
pour apparaître dans cette liste, vous devez modifier L'AndroidManifest.fichier xml et ajouter les lignes suivantes sous votre activité:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
cela fera apparaître votre application dans la liste. Maintenant, je pense que vous voudrez probablement aussi savoir comment gérer cela dans votre code. Quand une autre application va partager du texte avec vous, il va commencer votre application avec un Android "intention". Pour pouvoir utiliser Intents, vous avez besoin d'un plugin PhoneGap. Je pense WebIntent pourrait vous convenir. Ce serait le code:
// 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.
});
});
plus d'informations sur WebIntent here: http://smus.com/android-phonegap-plugins/
Note: Je ne pense pas que vous serez en mesure de faire cela avec PhoneGap construire cependant ... vous ne pouvez utiliser que des plugins supportés, et ne pouvez pas changer le AndroidManifest.fichier xml que beaucoup. Vous devrez probablement suivre la route de Cordova et tout construire sur votre machine.
Edit : il y a peu de gens qui demandent comment le faire sur iOS. Il y a deux étapes pour le faire :
- associez votre application avec les associations de type de fichier de droite en ajoutant les informations pertinentes dans vos informations.plist. Cette réponse explique comment le faire: comment associer des types de fichiers avec une application iPhone? . Cela va faire apparaître votre application dans la liste, mais votre application ne recevra pas encore les données.
- Votre application va maintenant être lancée avec de nouveaux paramètres. Vous devez maintenant être capable de lire ces paramètres. Cochez cette question/réponse sur SO, il fait exactement cela: Comment passer des arguments à l'application construite sur Phonegap
j'ai réussi à obtenir L'URL du fichier à partager; en utilisant EXTRA_STREAM introduit de EXTRA_TEXT à l'intérieur de deviceready, modifiant Webintent.java, et l'ajout d'un filtre d'intention dans AndroidMenifest.XML.
voici à quoi ressemble mon activité principale:
<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>
j'ai trouvé que le plugin avait un bug pour EXTRA_STREAM part, donc j'ai modifié mon javafile selon ceci:
https://github.com/Initsogar/cordova-webintent/issues/23
aussi dans mon fichier js, je dois appeler la fonction comme ceci: (utilisation de EXTRA_STREAM au lieu 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");
});
et je reçois L'URI du fichier.
@ericpeters0n-lorsque vous utilisez les applications iPhone et le partage, d'où vient cette liste d'applications? Par exemple, lorsque je suis dans la galerie de Photos et que je partage, la liste comprend le Message, Le Courrier, Twitter, Facebook, Flickr. Comment ces applications se sont-elles inscrites pour apparaître sur cette liste?