android – 仅获取联系人手机号码

前端之家收集整理的这篇文章主要介绍了android – 仅获取联系人手机号码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有关于使用Contacts API获取联系人号码的问题,有几个问题,但我想知道是否有办法识别所检索的号码是手机号码.

以下代码通常显示获取联系人电话号码的方式,因为它会获取一个或多个电话号码列表:

String[] projection = {ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER};
    String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1";

    Cursor cursor = null;
    Cursor phones = null;
    try
    {
        cursor =  managedQuery(intent.getData(),projection,selection,null,null);
        while (cursor.moveToNext()) 
        {           
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

            phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null);
            while (phones.moveToNext()) 
            {               
                String pdata = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
                Log.v("DATA",pdata);
            }                           
       }  
    }
    catch (NullPointerException npe)
    {
        Log.e(TAG,"Error trying to get Contacts.");
    }
    finally
    {
        if (phones != null)
        {
            phones.close();
        }
        if (cursor != null)
        {
            cursor.close();
        }           
    }

虽然这样做还不错,但是有什么方法可以轻松识别电话号码是移动类型(除了尝试与正则表达式匹配).

我怀疑必须有一个相关的数据,以便本地应用程序可以分类电话号码,如下图所示:

解决方法

我偶然发现了一篇博客文章,它为使用ContactsContract api here提供了一个很好的解释.

所以,在上面的例子中,我将上面的代码部分更改为:

while (phones.moveToNext()) 
{                   
     int phoneType = phones.getInt(phones.getColumnIndex(Phone.TYPE));
     if (phoneType == Phone.TYPE_MOBILE)
     {
          phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
          phoneNumber = phoneNumber.replaceAll("\\s","");
          break;
     }
}

这个环绕所有手机的个人联系人,如果该类型是Phone.TYPE_MOBILE,那么它需要这个.

希望这可以帮助有同样问题的人.

猜你在找的Android相关文章