2013-10-04 60 views
1

我要啓動聯繫人選取器,獲取結果並獲取聯繫人的姓名和電話號碼。我正在關注這個link的示例。ContactPicker活動結果上的列無效

看起來很簡單。啓動意圖:

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); 
pickContactIntent.setType(Phone.CONTENT_TYPE); 
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); 

,並獲得了onActivityResult結果:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     Uri contactUri = data.getData(); 
     String[] projection = {Phone.NUMBER}; 

     Cursor cursor = getContentResolver() 
      .query(contactUri, projection, null, null, null); 
     cursor.moveToFirst(); 
     int column = cursor.getColumnIndex(Phone.NUMBER); 
     String number = cursor.getString(column); 

     // Do something with the phone number... 
    } 
} 

但是當我做getContentResolver()查詢(...),它拋出一個異常:

10-04 15:24:57.390: E/AndroidRuntime(14303): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://com.android.contacts/contacts/lookup/3218idc91bbd08f828c0.2327ig:104894074019203432183/314 flg=0x1 }} to activity {com.smv.vtickets/com.smv.vtickets.activities.MainActivity}: java.lang.IllegalArgumentException: Invalid column data1 

它告訴我列數據1無效:

java.lang.IllegalArgumentException: Invalid column data1 

不應該這樣做嗎?

編輯: 我仔細研究了聯繫供應商的工作方式。這是有點亂,所以,長話短說,我結束了使用這個:Android contact picker

+0

可能重複[Logcat說「無效的列data1」](http://stackoverflow.com/questions/17255434/logcat-says-invalid-column-data1) – Selvin

+0

我不確定這是否是原因你的問題,但在你的'onACtivityResult()'你沒有檢查,以確保請求代碼匹配'PICK_CONTACT_REQUEST'。除此之外,代碼看起來是一樣的。 – Prmths

+0

我不想複製示例中的所有代碼,但是我正在檢查請求代碼是否匹配。問題是使用Phone.NUMBER列的投影構建查詢。 – Megacan

回答

-1

我使用ContactsContract.PhoneLookup.NORMALIZED_NUMBER搜索電話號碼時,這工作得很好。這是一個列名錯誤。