2017-08-03 132 views
0

我試圖使用我的android應用程序共享聯繫人,並且庫存了。有什麼方法可以直接使用意圖分享聯繫人?或者我必須發送聯繫信息並在其他設備中重新構建它?另外,還有沒有其他的方式來做到這一點,而不使用意圖?在android中共享聯繫人

回答

1

您可以使用ContactsContract API將聯繫人分享爲電子名片文件(例如通過Whatsapp發送)。

(我假設你已經有聯繫人的lookupKey,如果沒有它,讓我知道,我會添加代碼從使用ContactID得到它)

UPDATE添加方法從使用ContactID

得到LookupKey

(確保導入ContactsContactsContract.Contacts

private String getLookupKey(long contactId) { 
    String lookupKey = null; 
    String[] projection = new String[]{Contacts.LOOKUP_KEY}; 
    String selection = Contacts._ID + "=" + contactId; 
    Cursor c = getContentResolver().query(Contacts.CONTENT_URI, projection, selection, null, null); 
    if (c != null) { 
     if (c.moveToFirst()) { 
      lookupKey = c.getString(0); 
     } 
     c.close(); 
    } 
    return lookupKey; 
} 

String lookupKey = getLookupKey(long contactId); 
if (TextUtils.isEmpty(lookupKey)) { 
    Log.e(TAG, "couldn't get lookupKey"); 
    return; 
} 
Uri shareUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey); 

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType(Contacts.CONTENT_VCARD_TYPE); 
intent.putExtra(Intent.EXTRA_STREAM, shareUri); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Share a contact"); 
startActivity(intent); 
+0

謝謝你的回答,我很抱歉,但我甚至不知道聯繫人的lookupKey是什麼,你介意給我解釋一下並刪除代碼嗎? – Maxi

+0

你有聯繫人嗎? – marmor

+0

是的,我有,這是工作,非常感謝你:D – Maxi

0

我會使用的策略是在本地獲取所需的聯繫人。然後,將這些解析到具有所需字段的JSON對象中。將JSON發送到其他用戶從其下載的服務器或通過藍牙將JSON發送到其他設備。

+0

我明白了,但舉例來說,如果我想通過WhatsApp的發送它,我該怎麼做才能使JSON接觸OBJE ct在whatsapp? – Maxi