Tôi phải tìm kiếm địa chỉ liên hệ dựa trên số điện thoại. Đây là mã hoạt động để tìm nạp địa chỉ liên hệ. Cấp API Android mà tôi đang sử dụng là 15Android: Tìm kiếm liên hệ dựa trên số điện thoại
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor query = mContent.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '%" + constraint.toString() + "%'"
,null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
Tôi có thể tìm nạp địa chỉ liên hệ không có chỗ trong số điện thoại được lưu trong bảng danh bạ. Nếu số điện thoại có khoảng cách giữa, truy vấn trên sẽ không thành công. Ví dụ: đối với một liên hệ, nếu số điện thoại được lưu dưới dạng 1234567890 và khi tôi đang tìm kiếm với giá trị 1234, thì liên hệ này sẽ được truy lục. Nhưng không thành công nếu số liên lạc được lưu thành "123 456 7890".
Dòng dưới cùng, khi tôi cố gắng tìm kiếm địa chỉ liên hệ có hoặc chứa "1234" với số điện thoại, kết quả sẽ trả lại cho tôi địa chỉ liên hệ có số điện thoại "1234567890" và "123 4567 890". Vì một số điện thoại Android tiết kiệm số điện thoại có khoảng cách giữa.
Làm cách nào để giải quyết vấn đề này. Bất kỳ trợ giúp được đánh giá cao.
Thêm '%' giữa mỗi ký tự trong 'ràng buộc' của bạn sẽ là một tùy chọn – venkatKA
Câu chuyện dài ngắn, để tìm kiếm theo số điện thoại, bạn cần sử dụng' ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER' chứa số điện thoại trong ' Định dạng E.164'. http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html#NORMALIZED_NUMBER –
@SarwarErfan Rất tiếc, tôi không thể sử dụng hằng số này, cấp API mà tôi đang ở là 15. 'Liên hệContract.CommonDataKinds. Điện thoại.NORMALIZED_NUMBER' được thêm vào API 16. – User12111111