Android中访问联系人数据示例

来源:互联网 发布:电子病历软件免费 编辑:程序博客网 时间:2024/06/15 02:22

联系人提供了自己ContentProvider,因此可以使用ContentResolver来访问它的数据。

举例来说:

.............//创建一个隐式Intentfinal Intent pickIntent = new Intent(Intent.ACTION_PICK,        ContactsContract.Contacts.CONTENT_URI);mSuspectButton = (Button)v.findViewById(R.id.crime_suspect);mSuspectButton.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        //启动联系人,并要求返回结果        startActivityForResult(pickIntent, REQUEST_CONTACT);    }});..............

处理返回结果的代码如下:

@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    ...........    } else if (requestCode == REQUEST_CONTACT && data != null) {        //返回结果中包含了,选择的数据对应的地址        //根据这个地址,就可以访问联系人中uri对应的ContentProvider的数据        Uri contactUri = data.getData();        //指定需要访问的内容        String[] queryFields = new String[] {                ContactsContract.Contacts.DISPLAY_NAME,                ContactsContract.Contacts._ID        };        //得到对应的Cursor        Cursor c = getActivity().getContentResolver()                .query(contactUri, queryFields, null, null, null);        if (c == null) {            return;        }        try {            if (c.getCount() == 0) {                return;            }            c.moveToFirst();            String suspect = c.getString(0);            mCrime.setSuspect(suspect);            mSuspectButton.setText(suspect);            mSuspectContactId = c.getString(1);            mDialButton.setEnabled(true);        } finally {            c.close();        }    }    ................}

联系人应用返回结果Intent时,会添加Intent.FLAG_GRANT_READ_URI_PERMISSION标志。
该标志赋予当前应用访问contactUri对应的联系人数据的权限。

0 0