如何选择联系人的非默认电话号码?

乔·拉希莫夫

我正在开始联系人选择器活动以获取电话号码

    val i = Intent(Intent.ACTION_PICK)
    i.type = ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE
    startActivityForResult(i, REQUEST_CODE_PICK_CONTACT)

如果联系人没有默认号码,则会显示电话号码选择器对话框

在此处输入图片说明

如果联系人具有默认号码,则不会显示电话号码选择器对话框,并且默认情况下会使用默认号码。

所以我的问题是:即使联系人具有默认号码,如何显示电话选择器对话框?

大理石

代替使用电话选择器,而使用联系人选择器,然后显示电话对话框。

Intent intent = Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, REQUEST_SELECT_CONTACT);

...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) {
        Uri contactUri = data.getData();
        long contactId = getContactIdFromUri(contactUri);
        List<String> phones = getPhonesFromContactId(contactId);
        showPhonesDialog(phones);
    }
}

private long getContactIdFromUri(Uri contactUri) {
    Cursor cur = getContentResolver().query(contactUri, new String[]{ContactsContract.Contacts._ID}, null, null, null);
    long id = -1;
    if (cur.moveToFirst()) {
        id = cur.getLong(0);
    }
    cur.close();
    return id;
}

private List<String> getPhonesFromContactId(long contactId) {
    Cursor cur = getContentResolver().query(CommonDataKinds.Phone.CONTENT_URI, 
                    new String[]{CommonDataKinds.Phone.NUMBER},
                    CommonDataKinds.Phone.CONTACT_ID + " = ?", 
                    new String[]{String.valueOf(contactId)}, null);
    List<String> phones = new ArrayList<>();
    while (cur.moveToNext()) {
        String phone = cur.getString(0);
        phones.add(phone);
    }
    cur.close();
    return phones;
}

private void showPhonesDialog(List<String> phones) {
    String[] phonesArr = phones.toArray(new String[0]);

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Select a phone:");

    builder.setItems(phonesArr, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Log.i("Phone Selection", "user selected: " + phonesArr[which]);
        }
    });

    builder.show();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何获取所选联系人的电话号码

如何在iOS中选择联系人电话号码?

如果号码格式不同,如何匹配用户联系人列表中的电话号码?

从ListView中选择联系人,并在Android中获取他们的电话号码

Android如何通过我的通话记录联系人电话号码获取联系人ID

使用ContentProvider从联系人获取电话号码-Android

从电话号码获取实际的联系人姓名

从Android联系人簿获取电话号码

Android-从电话号码获取联系人照片

Android从联系人列表中获取电话号码

从联系人列表中获取电话号码

通过联系人姓名获取电话号码

如何通过姓名和电话号码搜索联系人?

如何从联系人到我的SMS应用程序获取电话号码

iOS通讯录如何通过电话号码获取联系人

如何从他的电话号码中获取联系人的姓名

如何获取所需的联系人显示名称基于反应本机中的电话号码

如何获取给定电话号码的联系人姓名

如何构建一个显示我的联系人电话号码的应用

从联系人中选择电话号码

使用联系人Android Studio的电话号码在联系人列表中打开联系人信息

如何快速从用户的联系人中访问电话号码?

如何从设备上的每个联系人仅获得第一个电话号码?

创建新联系人作为交换时如何添加电子邮件地址和电话号码

我们如何使用Iphone应用程序中的swift从联系人获取电话号码?

如何通过Xamarin C#在Android中添加具有多个电话号码的联系人?

以编程方式更新android中的联系人姓名和电话号码

通过电话号码搜索联系人,并使用3位数前缀过滤

通过电话号码从Exchange Server查询GAL联系人