0

すべての連絡先をリストする必要があるプロジェクトに取り組んでいます。私はこの記事に従っています。

私のAndroidManifest.xmlには以下が含まれているため、連絡先を読み取ることができます。

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

コードはここにあります

private void getContacts() {
    try {
        // Form an array specifying which columns to return. 
        String[] projection = new String[] {
                                    People._ID,
                                    People._COUNT,
                                    People.NAME,
                                    People.NUMBER};
        
        // Get the base URI for the People table in the Contacts content provider.
        Uri contacts =  People.CONTENT_URI;
        
        // Make the query. 
        Cursor managedCursor = managedQuery(contacts,
                                    projection, // Which columns to return 
                                    null,       // Which rows to return (all rows)
                                    null,       // Selection arguments (none)
                                    // Put the results in ascending order by name
                                    People.NAME + " ASC");
                
        printContacts(managedCursor);
    }
    catch(Exception ex) {
        Log.d("Contacts",ex.toString());
    }
}

private void printContacts(Cursor cur){ 
    if (cur.moveToFirst()) {
        String name; 
        String phoneNumber; 
        int nameColumn = cur.getColumnIndex(People.NAME); 
        int phoneColumn = cur.getColumnIndex(People.NUMBER);
        String imagePath; 
    
        do {
            // Get the field values
            name = cur.getString(nameColumn);
            phoneNumber = cur.getString(phoneColumn);
            Log.d("Contacts","Name: "+ name + " **** Phone: "+ phoneNumber);
        } while (cur.moveToNext());
    }
}

エミュレーター (2.3.3) で実行すると、以下のエラーがスローされます。

java.lang.IllegalArgumentException: Invalid column _count

誰かがそれを修正できますか?貴重な時間とご協力に感謝します。

4

2 に答える 2

2

文字列 People._COUNT を削除すると、すべてが機能します

参照: Android SDK - すべてのユーザーの一覧表示

于 2011-12-14T17:40:49.837 に答える
1

Android Peopleクラスは廃止されました。代わりにContactsContractを使用する必要があります。Emulator API レベル 10 で実行し、このクラスは API レベル 5 以降非推奨になっているため、People を使い続ける理由はありません。

于 2011-12-14T17:26:35.110 に答える