2017-10-20 78 views
1

怎麼可能啓動一個新的聯繫人與vCard存儲爲字符串的意圖? 可能以某種方式設置原始vCard而不是URI? A排序的:開始與聯繫作爲vCard字符串的意圖

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

你想要實際做什麼?顯示聯繫人詳細信息?如果是這樣,這是不可能的一個字符串,聯繫人必須插入聯繫人數據庫使用ContactsContract api – marmor

+0

是的,我想要在聯繫人中打開它。我現在使用ContactsContract,逐個插入項目。是否有可能一次導入整個電子名片? –

+0

不可能在API中,但Android上的開源聯繫人應用程序可以完成它,您可以將該代碼複製到您的項目中,但它非常複雜,逐個添加項目會更簡單。但是API中的其他方向是可能的,將聯繫人導出到vcard。 – marmor

回答

0

好像Android的AOSP移動虛擬卡處理了短信應用到聯繫人應用程序,這樣看來,現在是可能的。

但是,它不是純粹的編程方式,用戶將看到一個界面來選擇她想存儲該傳入聯繫人的帳戶。

對其進行測試,下載an example vcf file到手機的下載文件夾,然後運行以下意圖:

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

或代碼:

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

因此,在你的應用程序,你需要保存將您的字符串轉換爲SD卡上的文件,其中Contacts應用程序可以從中讀取(而不是您的應用程序的私人數據文件夾),然後將該意圖與指向該文件的uri一起發送。

+0

謝謝,所以不可能直接在Intent中發送vcard作爲額外的代碼? –

+1

看起來並不像它的可能,你可以在這裏查看他們的代碼:https://github.com/aosp-mirror/platform_packages_apps_contacts/blob/a33aca875ae2135e720385d07d637cf8819c7f8a/src/com/android/contacts/vcard/ImportVCardActivity.java – marmor