Prova questo:
public class AndroidTestActivity extends ListActivity {
private static final String PHONE_NUMBER = "xxxxxxx"; // TODO: Inserisci qui il numero da cercare
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String phoneNumberReverse = new StringBuffer(PHONE_NUMBER).reverse().toString();
ContentResolver cr = this.getContentResolver();
Cursor cur = cr.query(
CommonDataKinds.Phone.CONTENT_URI,
new String[] {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, CommonDataKinds.Phone.NUMBER},
CommonDataKinds.Phone.DATA4+" = ?",
new String[] {phoneNumberReverse},
null);
startManagingCursor(cur);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_list_item_2,
cur,
new String[] {ContactsContract.Contacts.DISPLAY_NAME, CommonDataKinds.Phone.NUMBER},
new int[] {android.R.id.text1,android.R.id.text2});
this.setListAdapter(adapter);
}
}Piccola nota su "CommonDataKinds.Phone.DATA4".
Ho notato che il formato del numero CommonDataKinds.Phone.NUMBER (ovvero la colonna "data1") è dipendente dalla lingua selezionata. Ad esempio il numero 3331234567 in inglese viene formattato come 333-123-4567 nella colonna data1. Quindi dovresti fare un test inserendo il numero formattato in quel modo.
Per ovviare a questo ho notato che nella colonna data4 viene formattato il numero senza caratteri speciali ma al contrario (ecco il motivo di "phoneNumberReverse")!

Penso che questo pezzettino di codice si possa ottimizzare parecchio (specialmente questa gestione del numero), se avete idee postatele pure!
Ciau!
