6

編集 ::: コードは機能します。これは Eclipse の問題であり、コードは意図したとおりに logcat に出力を表示します。

アンドロイド 2.3.3

私はコンテンツプロバイダーの使用にかなり慣れていません。電話から連絡先を取得する方法の例を試してみたいだけです。いくつかの例を見てきましたが、SAMSUNG Mobile で試してみたところ、うまくいきませんでした。

これが私が使用したコードです...

public class Class_Add_Contact extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_add_contact);

        readContacts();    
    }

    private void readContacts() {
        // TODO Auto-generated method stub

        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);

        while (cur.moveToNext()) {

            String name =cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));    
            String phoneNumber = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            System.out.println(name + "   " + phoneNumber);
            }
    }
}

コードは正常に見えますが、logcat に数値が表示されません。何が間違っている可能性がありますか?

4

1 に答える 1

8

これを試して

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

while (cursor.moveToNext()) {
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
    String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    System.out.println(contactId + "   " + name);
}
cursor.close();

連絡先の名前とIDを返します(IDはおそらく連絡先テーブルの行番号です)

于 2013-04-06T15:23:49.373 に答える