"Моя проблема не с набранным номером. Даже если я набираю 1234 или 123-4, мне нужны все контакты с номером телефона, начинающимся с 1234. Но здесь, если я набираю 1234, извлекаются только контакты, начинающиеся с 1234, а не123-4. "
, потому что вы напрямую проверяете number.try, чтобы ваша строка набрала dialledNumber таким образом, чтобы она выглядела как 123-456-7890, а затем запросите обе эти строки, например:
Если предположить,
String dialledNumber="1234";
String dialledNumberFormatted="123-4"; // Create this on your own from dialledNumber you get
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
Cursor cursor = this.getContentResolver().query(
uri,
new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + dialledNumber + "%'" +" OR "+ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + dialledNumberFormatted + "%'", null,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
Это тип взлома, но вы можете использовать его, не создавая проблем для вас где-либо еще.