我有一个“联系”类,我正在使用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);
答案 0 :(得分:0)
我猜你的问题很清楚你刚刚在网上找到了这个代码。
您的String[] projection
可以在SQL查询中与'SELECT ...'进行比较。
目前,您只需要Phone.NUMBER,这就是您所能得到的。
我不知道常量是什么,但我想你想要的东西;
String[] projection = {Phone.NUMBER, Contact.NAME, Contact.ID};
从那时起,您可以使用常规get方法从Contact对象获取此数据。
PS。我再说一遍,常数是猜测。如果它们不正确,我相信你可以自己找到确切的那些,甚至IDE只会通过下拉菜单帮助你。