2010-11-14 61 views
1
的聯繫人姓名

我正在使用Android Wildfire,並使用以下代碼來查找現有電話號碼的聯繫人姓名。無法解析來自號碼

private String getContactNameFromNumber(String number) { 
    String[] projection = new String[] { Contacts.Phones.DISPLAY_NAME, 
      Contacts.Phones.NUMBER }; 

    Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number)); 

    Log.d(TAG, contactUri.toString()); 

    // query time 
    Cursor c = context.getContentResolver().query(contactUri, projection, null, 
      null, null); 

    // if the query returns 1 or more results 
    // return the first result 
    if (c.moveToFirst()) { 
     String name = c.getString(c.getColumnIndex(Contacts.Phones.DISPLAY_NAME)); 
     Log.d(TAG, name); 
     return name; 
    } 

    // return null if no match was found 
    return null; 
} 

我無法解析聯繫人姓名。我是新來的這個主題任何援助將不勝感激。提前謝謝了。 logcat輸出顯示以下內容

11-14 13:45:35.879: DEBUG/Test(3342): content://contacts/phones/filter/%2B919773653345 
+0

你確定你正在搜索的號碼確實存在於數據庫中嗎? – lbedogni 2010-11-14 08:29:41

+0

是的,它確實存在。 – 2010-11-14 08:41:32

回答

1

你獲得聯繫人已過時的方法。除非您正在爲舊手機進行編程,否則您應該使用ContactsContract.PhoneLookup

正如LucaB所說,遊標應該可能被關閉。

+0

是的,我注意到它,現在光標被關閉。 – 2010-11-14 09:33:32

1

我認爲你的問題是你不能正確調用聯繫人。 嘗試改變

Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number)); 

Uri lookupUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey) 
Cursor c = getContentResolver().query(lookupUri, projection, null, null, null); 
try { 
    c.moveToFirst(); 
    String displayName = c.getString(0); 
} finally { 
    c.close(); 
} 
+0

我的API級別是1.6,我沒有Contacts.CONTENT_LOOKUP_URI – 2010-11-14 09:18:41

+0

好吧不知道.. – lbedogni 2010-11-14 10:20:59