0

我有一个“联系人”类,我正在使用适用于 Android 的标准联系人选择器代码,但我也想获取联系人的“id”和“姓名”,而不仅仅是号码......这是我的代码。

@Override public void onActivityResult( int requestCode, int resultCode, Intent intent ) {

    super.onActivityResult( requestCode, resultCode, intent );
    if ( requestCode == PICK_CONTACT_REQUEST ) {

        if ( resultCode == RESULT_OK ) {
            Uri contactUri = intent.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);
            int contactNumber = Integer.parseInt(number);

            //i need to get the contactId and the contactName here

            Contact newContact = new Contact(contactId,contactName,contactNumber);

               EditText _contactName = (EditText) findViewById(R.id.contact_name);
               _contactName.setText(number.toString());
            }
        }
    }

我找到了解决方案。如果有人需要,就在这里。

            Uri contactUri = intent.getData();
            String[] projection = {Phone.NUMBER, Phone.DISPLAY_NAME, Phone._ID};

            Cursor cursor = getContentResolver()
                    .query(contactUri, projection, null, null, null);
            cursor.moveToFirst();

            int columnNumber = cursor.getColumnIndex(Phone.NUMBER);
            String contactNumber = cursor.getString(columnNumber);

            int columnName = cursor.getColumnIndex(Phone.DISPLAY_NAME);
            String contactName = cursor.getString(columnName);

            int columnID = cursor.getColumnIndex(Phone._ID);
            String ID = cursor.getString(columnID);
            int contactID = Integer.parseInt(ID);
4

1 回答 1

0

我想您的问题清楚地表明您刚刚在网上某处找到了此代码。

String[] projection可以在 SQL 查询中与 'SELECT...' 进行比较。目前,您只需要 Phone.NUMBER,这就是您所得到的。

我不知道常量是什么,但我想你想要类似的东西;

String[] projection = {Phone.NUMBER, Contact.NAME, Contact.ID};

从那时起,您可以使用普通的 get 方法从您的 Contact 对象中获取此数据。

附言。我再说一遍,常数是一个猜测。我敢肯定,如果它们不正确,您可以自己找到确切的内容,甚至 IDE 也会通过下拉菜单帮助您。

于 2013-03-27T11:06:02.460 回答