2017-10-20 13 views
1

Comment est-il possible de démarrer un nouveau contact Intention avec vCard stockée en tant que chaîne? Est-il possible de définir une vCard brute au lieu de l'URI d'une manière ou d'une autre? Une sorte de:Début Intention avec le contact en tant que vCard dans la chaîne

intent.setDataAndType(vcardAsString,"text/x-vcard") 
+0

Que voulez-vous que l'intention de faire réellement? afficher un contact? si c'est le cas, ce n'est pas possible à partir d'une chaîne, le contact doit être inséré dans la base de données contacts à l'aide de ContactsContract api – marmor

+0

Oui, je veux l'ouvrir dans Contacts. J'utilise désormais ContactsContract, en insérant les éléments un par un. Est-il possible d'importer vCard entière à la fois? –

+0

pas possible dans l'API, mais l'application de contacts open source sur Android le fait, vous pouvez copier ce code sur votre projet, mais c'est un code assez compliqué, ajouter des éléments un par un serait plus simple. l'autre direction est cependant possible dans l'API, en exportant un contact vers une vcard. – marmor

Répondre

0

Il semble que PSBA Android déplacé vcard la manipulation de l'application de messagerie à l'application Contacts, il semble donc qu'il est possible maintenant.

Cependant, ce n'est pas purement programmatique, l'utilisateur se verrait présenter une interface utilisateur pour sélectionner le compte dans lequel elle souhaite stocker ce contact entrant.

Pour le tester, télécharger an example vcf file dans le dossier Téléchargements de votre téléphone, puis exécutez l'intention suivante:

adb shell am start -a "android.intent.action.VIEW" -t "text/vcard" -d "file:///sdcard/Download/john-doe.vcf" 

ou dans le code:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("file:///sdcard/Download/john-doe.vcf")); 
intent.setType("text/vcard"); 
startActivity(intent); 

Donc dans votre application, vous devez enregistrer votre chaîne à un fichier sur la carte SD, où l'application Contacts peut lire (pas le dossier de données privées de votre application), et envoyer l'intention avec l'uri pointant vers ce fichier.

+0

merci, il n'est donc pas possible d'envoyer vcard comme extra directement dans Intent? –

+1

ne semble pas possible, vous pouvez vérifier leur code ici: https://github.com/aosp-mirror/platform_packages_apps_contacts/blob/a33aca875ae2135e720385d07d637cf8819c7f8a/src/com/android/contacts/vcard/ImportVCardActivity.java – marmor