Android如何获取以编程方式使用应用程序应用程序的联系人列表

问题描述 投票:3回答:2

我在这个应用程序中使用小型Android应用程序我试图获取联系人使用什么应用程序应用程序,并在联系人更新他/她的个人资料图片和状态时,从我的应用程序提醒我选择的什么应用程序联系人。

android whatsapp
2个回答
6
投票

您可以查询内容光标以查看联系人具有的属性。

Cursor c1 = appActivity.getContentResolver().query(
                     ContactsContract.Data.CONTENT_URI
                     ,null,null,null, null);
c1.moveToFirst();
DatabaseUtils.dumpCursor(c1);
c1.close();

或者特别是如果你想查询whatsapp联系人这里是属性:

  • 您可以使用值com.whatsapp查询ContactsContract.RawContacts.ACCOUNT_TYPE
  • 您可以使用值为vnd.android.cursor.item / vnd.com.whatsapp.profile的MIMETYPE

例:

 c = appActivity.getContentResolver().query(
             ContactsContract.Data.CONTENT_URI
             ,new String[] { ContactsContract.Contacts.Data._ID }
            ,"mimetype=?",
             new String[] { "vnd.android.cursor.item/vnd.com.whatsapp.profile" }, null);

c1.moveToFirst();
DatabaseUtils.dumpCursor(c1);
c1.close();

注意(@Ragnar):MIMETYPE专栏对我不起作用。我使用ACCOUNT_TYPE专栏,它的工作原理。


0
投票

如果您希望阅读电报联系人:

private val tgContactMimeType = "vnd.android.cursor.item/vnd.org.telegram.messenger.android.profile";

private val projectionTelegram = arrayOf(
    ContactsContract.Data.DATA1,//userId
    ContactsContract.Data.DATA3,//userPhone
    ContactsContract.Data.DISPLAY_NAME)//displayName

//read telegram contacts
phoneCursor = cr.query(
    ContactsContract.Data.CONTENT_URI,
    projectionTelegram,
    ContactsContract.Data.MIMETYPE + " = '" + tgContactMimeType + "'",
    null,
    null)
if (phoneCursor != null) {
    while (phoneCursor.moveToNext()) {
        val userId = phoneCursor.getString(0)
        val number = phoneCursor.getString(1)
        val displayname = phoneCursor.getString(2)
        val contact = PhoneContact()
        contact.firstName = displayname
        contact.phones.add(number)
        contactsMap[userId.toString()] = contact
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.