2014-08-31 105 views
4

我如何使用意圖共享Android聯繫人?Android:如何通過意圖分享聯繫人?

我想這樣的,但不知何故,我想我有轉發的聯繫人ID以不同的方式:

  Intent intent = new Intent(Intent.ACTION_SEND); 
      Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(con.id)); 
      intent.setData(uri); 
      startActivity(intent); 

回答

1

我如何可以共享使用意圖Android的接觸?

這是不可能的。聯繫人是一系列數據庫記錄,因此通常不能通過ACTION_SEND進行共享。

此外,您不使用setData()ACTION_SEND。通常,您將EXTRA_TEXTEXTRA_STREAM設置爲要共享的文本或Uri,並將Intent的MIME類型設置爲EXTRA_TEXTtext/plain)或EXTRA_STREAM中的內容的MIME類型。您不妨查看the documentation on ACTION_SEND其他選擇。

我的猜測是,一些應用程序會同意共享聯繫人,和那些會崩潰,當他們嘗試,如EXTRA_STREAMUri應該代表一個流(例如,通過FileProvider送達的文件),而不是數據庫式的條目。

您可能會考慮生成一些代表聯繫人的文本或HTML,然後共享它,因爲這很可能會成功(例如發送電子郵件)。或者,您可以嘗試標準的聯繫人編碼格式,如vCard,然後查看是否有效。

+0

不知何故,它必須是可能的!我可以爲每個聯繫人選擇我的真實設備上的分享操作(Android 4.4.4)。例如,如果我選擇「Gmail」,則* .vcf文件將自動附加到生成的電子郵件中。 – nr1 2014-08-31 19:03:50

+0

@ nr1:.vcf文件是表示聯繫人的文件,而不是聯繫人本身。尤其是,.vcf文件是一個[vCard文件](http://en.wikipedia.org/wiki/VCard),我在回答中提出了這個問題。 – CommonsWare 2014-08-31 19:32:11

+0

@CommonsWare你可以展示如何將聯繫人的數據(無論可能)導出到VCF文件中並共享它嗎?這是一個很好的答案:http://stackoverflow.com/questions/8701727/extract-contact-list-in-vcf-format/8701774#8701774? – 2015-11-09 08:48:42