如何仅在使用联系人选择器存在电话号码时显示

Posted

技术标签:

【中文标题】如何仅在使用联系人选择器存在电话号码时显示【英文标题】:How to show Only if phone Number is present using contactpicker 【发布时间】:2016-10-24 08:21:51 【问题描述】:

我正在使用联系人选择器库来选择多个联系人,但如果一个联系人不包含任何号码并且如果它被选中,那么它会在编辑文本字段中显示一些空指针异常。如何删除该消息以及如何删除尾随逗号。以下是我的代码。

 try 
            int pos = 0;
            for (Contact contact : contacts) 
                String displayName = contact.getDisplayName();
                result.append(displayName + ",");
                result.setSpan(new BulletSpan(15), pos, pos + displayName.length() + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
                //pos += displayName.length() + 1;
            
        
        catch (Exception e) 
            result.append(e.getMessage());
        

        contactsView.setText(result);

【问题讨论】:

您使用的是哪个库? Contact 类有什么方法可以获取电话号码吗? com.onegravity.contactpicker 这个库........ContactPickerActivity 是类,是的,它有一个方法来获取电话号码 然后根据更新result检查是否有检查电话号码的条件 【参考方案1】:

请尝试检查此代码

 void getAllContacts() 
    ArrayList<String> nameList = new ArrayList<>();
    ArrayList<String> numberList = new ArrayList<>();

    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER;
    String[] list = new String[]ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.Contacts._ID;
    Cursor cursor = getContentResolver().query(uri, list, selection, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

    cursor.moveToFirst();
    if (cursor.moveToFirst()) 
        do 
            String contactNumber =     cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));


            contactNuber.add(contactNumber);
            contactsName.add(contactName);
            nameList.add(contactName);
            numberList.add(contactNumber);

         while (cursor.moveToNext());
        cursor.close();
        myContacts.put("name", nameList);
        myContacts.put("number", numberList);


    


【讨论】:

以上是关于如何仅在使用联系人选择器存在电话号码时显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥 lint 在 Android Studio 中获取联系人列表名称和号码时显示“值 >= 1”?

如何更改不同分段控制索引的数据源

日期选择器仅在聚焦时显示错误

在 iPad 中关闭原生 UIActionsheet 和 UIPopover

在输入字段单击时显示 JQuery UI 日期选择器?

使用联系人选择器时从具有多个号码的用户中选择一个号码