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
可能重複[Logcat說「無效的列data1」](http://stackoverflow.com/questions/17255434/logcat-says-invalid-column-data1) – Selvin
我不確定這是否是原因你的問題,但在你的'onACtivityResult()'你沒有檢查,以確保請求代碼匹配'PICK_CONTACT_REQUEST'。除此之外,代碼看起來是一樣的。 – Prmths
我不想複製示例中的所有代碼,但是我正在檢查請求代碼是否匹配。問題是使用Phone.NUMBER列的投影構建查詢。 – Megacan