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

Get contact Number as it is from Contact list

我 运行 在使用 ContentResolver 获取联系人时遇到问题。

联系人列表显示带有空格的联系人,但在使用内容解析器获取联系人后,它删除了所有空格。

Contact list : +91 XXXXX XXXXX

After fetch : +91XXXXXXXXXX (Wrong removing spaces)

但是,如果数字是

,它不会删除字符

Contact list : +1 (XXX) XXX-XXXX

After fetch : +1 (XXX) XXX-XXXX (Correct as it is)

以下代码用于获取联系人

 String order = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC";
 String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME};
 Cursor cursor = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
                null, null, order);

CommonDataKinds.Phone.NUMBER 字段可以包含任何格式的数字,不一定是用户可显示的友好格式。 要格式化显示给用户的数字,您可以使用 Google 的 libphonenumber 包,它解析 phone 数字并允许您将其格式化为用户友好的格式,或用于存储和比较的规范 e164 格式。

https://github.com/googlei18n/libphonenumber