首页 > 系统 > Android > 正文

Android contentProvider 访问手机联系人的的两种方法

2019-11-09 16:38:51
字体:
来源:转载
供稿:网友

步骤:

1.创建一个项目

方法一:

2.在activity_main.xml中添加一个按钮,和一个listview用来展示数据

3.得到内容提供者

4.创建一个查询所有数据的点击事件

1).查询联系人

2).实列化适配器 然后重写4个方法

3).在getView()中实列化一个控件TextView,获取联系人的号码,获取联系人的姓名,把获取的值赋给控件

4).得到activity_main.xml中ListView的id

5).把适配器放入到listView中展示数据

//查询所有数据的点击事件public void getContact(View view){// 查询联系人 final Cursor cursor=mContentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); //实列化适配器  BaseAdapter adapter = new BaseAdapter(){@Overridepublic int getCount() {// TODO Auto-generated method stubreturn cursor.getCount();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {cursor.moveToPosition(position);//实列化控件               TextView tv_main_contact = new TextView(MainActivity.this);               //获取联系人的号码               String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replace("-", "").replace(" ", "").trim();               //获取联系人的姓名               String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)).trim();               //把获取的值赋给控件               tv_main_contact.setText("姓名:"+name+"号码:"+number);               return tv_main_contact;}};//得到activity_main.xml中ListView的id          final ListView listView = (ListView)findViewById(R.id.lv_main_values);          //把适配器放入到listView中展示数据          listView.setAdapter(adapter);}

5.添加读取联系人的权限

如果到下图这样就表示完成了

方法二:

在同上项目中添加代码就可以完成。

1.在activity_main.xml添加一个按钮和一个TextView展示数据

      

2.创建一个查询单个数据的点击事件

public void getSingContact(View view){//调用联系人界面Intent intent = new Intent();   intent.setAction(Intent.ACTION_PICK);   intent.setType("vnd.android.cursor.dir/phone");startActivityForResult(intent,0x100);}

补充一下:

调用联系人列表有几种方式

1).到联系人界面Intent intent = new Intent();   intent.setAction(Intent.ACTION_VIEW);   intent.setData(Contacts.People.CONTENT_URI);   startActivity(intent);

2).调用联系人界面Intent intent = new Intent();   intent.setAction(Intent.ACTION_PICK);   intent.setData(Contacts.People.CONTENT_URI);  startActivity(intent); 

3).跳转到指定id进行插入联系人

Intent intent=new Intent(Intent.ACTION_EDIT,Uri.parse("content://com.android.contacts/contacts/"+"1"));  startActivity(intent); 

因为查询单个是去联系人列表选择某一个联系人,所以需要跳转到联系人列表,选中之后把数据带回。

使用的是

调用联系人界面Intent intent = new Intent();   intent.setAction(Intent.ACTION_PICK);   intent.setType("vnd.android.cursor.dir/phone");startActivityForResult(intent,0x100);

3.重写onActivityResult方法

得到控件TextView 的id

PRivate TextView mTv_main_values;

tv_main_values=(TextView) findViewById(R.id.tv_main_values);

得到下图的就表示完成了


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表