0

連絡先アクティビティに送信されるインテントがあり、メイン アクティビティはこのコールバックで結果を取得します。問題は、列が常に -1 であることです。これはどうすれば連絡先の名前を取得できると言われていますか?

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == RESULT_OK) {
            Uri contactUri = data.getData();
            String[] projection = {Phone.NUMBER};
            Cursor cursor = getContentResolver().query(contactUri, 
                        projection, null, null, null);
            if (cursor.moveToFirst()) {
            int column = cursor.getColumnIndex(
                ContactsContract.PhoneLookup.DISPLAY_NAME);
            if (column >= 0) {
                String name = cursor.getString(column);
                addString(name);
            } else {
                addString("Could Not Get User Name");
                }
            }
        }
    }

}

4

1 に答える 1

1

あなたの投影はString[] projection = {Phone.NUMBER};、カーソルがこの列名のみString[] projection = {Phone.NUMBER, ContactsContract.PhoneLookup.DISPLAY_NAME};を持つようにするためです。Display_Name にアクセスするには、使用する必要があります。

また、ContentProvider が必要な情報を返すことを確認してください。

于 2013-07-11T19:51:16.830 に答える