2012-02-21 19 views
0

私は彼女のIDから連絡先の番号を見つけることができます。次のスニペットは、画面に数字を表示します。しかし連絡先のID番号から

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      CONTACT_PROJECTION,ContactsContract.CommonDataKinds.Phone._ID +" = 4627", 
      null, null); 
    phones.moveToNext(); 
    String phoneNumber = phones.getString(
      phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
    Toast.makeText(getBaseContext(), phoneNumber, Toast.LENGTH_LONG).show(); 

、私は彼女の電話番号からの彼女のIDを見つけるためにしようとした場合、

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      CONTACT_PROJECTION,ContactsContract.CommonDataKinds.Phone._ID +" = 4627", 
      null, null); 
    phones.moveToNext(); 
    String phoneNumber = phones.getString(
      phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      //Now I got a valid phone number 


      //using that number to find the id 
    Cursor ids = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      CONTACT_PROJECTION,ContactsContract.CommonDataKinds.Phone.NUMBER +" = "+ phoneNumber, 
      null, null); 
    ids.moveToNext(); 
    String id = ids.getString(
      ids.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID)); 
    Toast.makeText(getBaseContext(), id, Toast.LENGTH_LONG).show(); 

私は次のエラーを取得します。次のように

android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 

Iが使用投影である:

private static final String[] CONTACT_PROJECTION = new String[] { 
    ContactsContract.CommonDataKinds.Phone.NUMBER, 
    ContactsContract.CommonDataKinds.Phone._ID 
}; 

第二のカーソルは、私はコンタクトにおけるそのようなエントリがある知っている場合でも、空です。私は間違って何をしていますか?

+0

電話番号を照会するためのコンテンツフィルタURIがあります。 –

+0

あなたはそれを言う:ContactsContract.CommonDataKinds.Phone.NUMBER!= ContactsContract.PhoneLookup.NUMBER(これは私が知らないものです) – 0x5f3759df

答えて

0

理由はわかりませんが、PhoneLookupは私のために働いています。同じ問題を抱えている人には、ここに私のコードがあります。

Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode("aNumber")); 
Cursor phones = getContentResolver().query(contactUri , PEOPLE_PROJECTION, null, null, null); 
//here, the cursor keeps the wanted contact 

... 

private static final String[] PEOPLE_PROJECTION = new String[] { 
    ContactsContract.PhoneLookup._ID 
}; 
関連する問題