use*_*422 19 android android-contacts
我发现要启动过滤版本的联系人选择器(只显示有电话号码的联系人),我可以使用这个:
Intent pickContactIntent = new Intent( Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI );
pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(pickContactIntent, CONTACT_PICKER_RESULT);
Run Code Online (Sandbox Code Playgroud)
这样可行.我只想弄清楚如何在onActivityResult方法中检索所选联系人的姓名和电话号码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// what goes here...
}
Run Code Online (Sandbox Code Playgroud)
我在onActivityResult中尝试了很多不同的东西,但是查询没有返回数字.
小智 32
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, 1);
String phoneNo = null;
Uri uri = data.getData();
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor.moveToFirst()) {
int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
phoneNo = cursor.getString(phoneIndex);
}
curosr.close();
Run Code Online (Sandbox Code Playgroud)
以阿卡什的答案为基础.
第1步 - 需要在Manifest中添加读/写联系人权限.
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- OR - depends on the requiremnts-->
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
Run Code Online (Sandbox Code Playgroud)
第2步 - 然后需要启动联系人选择器意图,但在此之前需要检查是否授予了联系人权限(仅适用于Android> = 23)
if (hasPermissions(Manifest.permission.READ_CONTACTS)) {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, REQUEST_PICK_CONTACT);
} else {
// Request Permissions
}
Run Code Online (Sandbox Code Playgroud)
第3步 - 然后需要获得活动结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_PICK_CONTACT) {
String phoneNo = null;
String name = null;
Uri uri = data.getData();
Cursor cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
if (cursor.moveToFirst()) {
int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
phoneNo = cursor.getString(phoneIndex);
name = cursor.getString(nameIndex);
Log.e("onActivityResult()", phoneIndex + " " + phoneNo + " " + nameIndex + " " + name);
}
cursor.close();
}
}
Run Code Online (Sandbox Code Playgroud)
是的,就是这样.
| 归档时间: |
|
| 查看次数: |
11370 次 |
| 最近记录: |