Android从电话号码获取联系人姓名

时间:2015-05-28 10:52:19

标签: android telephonymanager

我正在尝试使用电话号码获取有关联系人的详细信息一切正常,但当联系电话号码保存了一些特殊字符时,我无法获得以下联系方式是我的代码:

<input class="cb" id="txtdurum_<%=counter%>" name="txtdurum" type="checkbox" />

与联系人保存的号码相同(+1(123)456-789)

//function called 
getContactName("+11234567890");

4 个答案:

答案 0 :(得分:2)

使用波纹管功能从电话号码中获取名称。我最近测试过它。它工作正常。因为电话查询将取代电话号码中的所有特殊字符。

ex-我保存了名为Gaurav的新号码0 + 0141(12-23)。我调用函数getContactName(01411223)然后它将返回名称Gauav。

请使用以下功能,如果不起作用,请告诉我。

 public static String getContactName(Context context, String phoneNumber) {
    ContentResolver cr = context.getContentResolver();
    Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Cursor cursor = cr.query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null);
    if (cursor == null) {
        return null;
    }
    String contactName = null;
    if(cursor.moveToFirst()) {
        contactName = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
    }

    if(cursor != null && !cursor.isClosed()) {
        cursor.close();
    }

    return contactName;
}

答案 1 :(得分:1)

您可以使用PhoneNumberUtils.stripSeparators(String)

或者您可以使用regular expression‌

filterNum = filterNum.replaceAll("[^0-9]+", "");

将删除不在0...9范围内的所有字符。我认为这会更容易。

这是the documentation

答案 2 :(得分:0)

您可以<{1}} 从字符串删除所有非数字字符,看一看,如果有效,请告诉我!

replaceAll("\\D+","");

答案 3 :(得分:0)

可能是这段代码会有所帮助

your_key_name

} }