androd—Intent操作ContentProvider获取电话号码

来源:互联网 发布:淘宝购物车地址管理 编辑:程序博客网 时间:2024/05/16 08:19

代码如下:

import android.app.Activity;import android.content.ContentUris;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.provider.ContactsContract;import android.widget.Toast;public class MyIntentContentDemo extends Activity {private static final int PICK_CONTACT_SUBACTIVITY = 1;// 定义操作标记@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);Uri uri = Uri.parse("content://contacts/people");// 连接URIIntent intent = new Intent(Intent.ACTION_PICK, uri);// 指定Intentsuper.startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);// 调用Intent}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case PICK_CONTACT_SUBACTIVITY:// 接收返回的数据Uri ret = data.getData();// 单个数据UriString phoneSelection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ "=?"; // 设置查询条件String[] phoneSelectionArgs = { String.valueOf(ContentUris.parseId(ret)) }; // 查询参数Cursor c = super.managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,phoneSelection, phoneSelectionArgs, null);// 查询全部手机号码StringBuffer buf = new StringBuffer() ;// 用于接收全部电话buf.append("电话号码是:") ;for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { // 循环取数据buf.append(c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))).append("、");// 取出电话号码}Toast.makeText(this, buf, Toast.LENGTH_LONG).show();// 显示信息}}}

所需权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />

2 0