点击电话按钮,进入到手机通讯录,直接选择联系人,将手机号码带回。
读取联系人,所以申请权限
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- startActivityForResult(new Intent(Intent.ACTION_PICK,
- ContactsContract.Contacts.CONTENT_URI), 0);
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (resultCode == Activity.RESULT_OK) {
- // ContentProvider展示数据类似一个单个数据库表
- // ContentResolver实例带的方法可实现找到指定的ContentProvider并获取到ContentProvider的数据
- ContentResolver reContentResolverol = getContentResolver();
- // URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集
- Uri contactData = data.getData();
- // 查询就是输入URI等参数,其中URI是必须的,其他是可选的,如果系统能找到URI对应的ContentProvider将返回一个Cursor对象.
- Cursor cursor = managedQuery(contactData, null, null, null, null);
- cursor.moveToFirst();
- // 条件为联系人ID
- String contactId = cursor.getString(cursor
- .getColumnIndex(ContactsContract.Contacts._ID));
- // 获得DATA表中的电话号码,条件为联系人ID,因为手机号码可能会有多个
- Cursor phone = reContentResolverol.query(
- ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
- ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
- + contactId, null, null);
- while (phone.moveToNext()) {
- String usernumber = phone
- .getString(phone
- .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
- et_mobile.setText(usernumber);
- }
- }
- }
获取全部联系人
- // 获取联系人数据
- ContentResolver cr = context.getContentResolver();
- //获取所有电话信息(而不是联系人信息),这样方便展示
- Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
- String[] projection = {
- ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,// 姓名
- ContactsContract.CommonDataKinds.Phone.NUMBER,// 电话号码
- };
- Cursor cursor = cr.query(uri, projection, null, null, null);
- if (cursor == null) {
- return null;
- }
- //最终要返回的数据
- List<ContactInfo> result = new ArrayList<ContactInfo>();
- while (cursor.moveToNext()) {
- String name = cursor.getString(0);
- String number = cursor.getString(1);
- //保存到对象里
- ContactInfo info = new ContactInfo();
- info.setName(name);
- info.setNumber(number);
- //保存到集合里
- result.add(info);
- }
- //用完记得关闭
- cursor.close();
- return result;
- public class ContactInfo {
- private String name;// 姓名
- private String number;// 电话号码
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getNumber() {
- return number;
- }
- public void setNumber(String number) {
- this.number = number;
- }
- }
打电话拨号功能:
权限:
- <uses-permission android:name="android.permission.CALL_PHONE"/>
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_CALL);//ACTION_DIAL
- intent.setData(Uri.parse("tel:"+"110"));
- startActivity(intent);