Android 调用系统电话薄

代码示例:

1. 权限
<!-- 加入读写联系人信息的权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
2.xml文件:
<
EditText android:id="@+id/mobileTel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="13458543469(王伟雄)" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/mobileTel" android:onClick="getTelClick" android:text="从通讯录中获取" />
3.Activity:
public class MainActivity extends Activity {
    // 声明文本框
    private EditText et_mobile;
    // 声明姓名,电话
    private String username, usernumber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        // 根据Id获得文本框
        et_mobile = (EditText) this.findViewById(R.id.mobileTel);
    }

    public void getTelClick(View v) {

        startActivityForResult(new Intent(Intent.ACTION_PICK,
                ContactsContract.Contacts.CONTENT_URI), 0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        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();
            // 获得DATA表中的名字
            username = cursor.getString(cursor
                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            // 条件为联系人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()) {
                usernumber = phone
                        .getString(phone
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                et_mobile.setText(usernumber + " (" + username + ")");
            }

        }
    }
}

 

posted @ 2014-12-24 14:13  WisonWang  阅读(337)  评论(0)    收藏  举报