2011-05-13 48 views
2

這個意圖打開聯繫人,包含只地址信息的條目:Android:如何啓動電子郵件聯繫人?

Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI); 

現在我試圖用這個模式來過濾包含電子郵件聯繫人:

Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI); 

但這節選(無action_pick for intent左右)

我該如何做到這一點?

回答

3

目前不能使用默認通訊錄應用程序:默認的聯繫人應用註冊了這個意圖過濾器(見線165 https://android.googlesource.com/platform/packages/apps/Contacts/+/master/AndroidManifest.xml#165):

<intent-filter> 
       <action android:name="android.intent.action.PICK" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:mimeType="vnd.android.cursor.dir/contact" /> 
       <data android:mimeType="vnd.android.cursor.dir/person" /> 
       <data android:mimeType="vnd.android.cursor.dir/phone_v2" /> 
       <data android:mimeType="vnd.android.cursor.dir/phone" /> 
       <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" /> 
       <data android:mimeType="vnd.android.cursor.dir/postal-address" /> 
      </intent-filter> 

所以它能夠給郵寄地址響應ACTION_PICK意圖,但不包括電子郵件地址ACTION_PICK意圖。

如果你想要做電子郵件地址選擇,你將需要創建自己的活動,從聯繫人提供商獲取光標,只顯示帶有電子郵件地址的用戶,並顯示在用戶選擇的ListView中。

+0

很好的解釋,謝謝! – decades 2011-05-15 08:22:26

+0

@Femi api支持vnd.android.cursor.item/email_v2作爲MIME類型? – Hades 2014-02-14 04:27:12

0

試試這個:

 public void readcontact(){ 
      try { 
       Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
       intent.setType("vnd.android.cursor.dir/email"); 
       startActivityForResult(intent, PICK_CONTACT); 
      } catch (Exception e) { 
        e.printStackTrace(); 
       } 
     } 
+0

這會拋出一個異常'android.content.ActivityNotFoundException:找不到處理Intent的行爲{act = android.intent.action.PICK typ = vnd.android.cursor.dir/email}' – ticofab 2012-09-27 13:19:27

相關問題