首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 讀取聯繫人電話號碼報「列不存在」錯誤的正確解決姿勢

     編輯:程式設計疑難解答

錯誤原因

代碼使用已棄用的 PhoneLookup.NUMBER,且未請求 READ_CONTACTS 權限。Android 2.0+ 應使用 ContactsContract.CommonDataKinds.Phone。

正確查詢代碼

Cursor cursor = getContentResolver().query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
    null, null, null, null);

while (cursor.moveToNext()) {
    String name = cursor.getString(cursor.getColumnIndex(
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    String number = cursor.getString(cursor.getColumnIndex(
        ContactsContract.CommonDataKinds.Phone.NUMBER));
    // 使用 name & number
}
cursor.close();

權限聲明

<uses-permission android:name="android.permission.READ_CONTACTS" />

Android 6.0+ 還需運行時動態申請權限。

適配器綁定

String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                 ContactsContract.CommonDataKinds.Phone.NUMBER};
int[] to = {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
    android.R.layout.simple_list_item_2, cursor, from, to, 0);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved