首页 > 系统 > Android > 正文

Android内容访问者访问联系人信息实例

2019-11-08 00:39:29
字体:
来源:转载
供稿:网友

效果图: 这里写图片描述

package com.example.android25_contentPRovide2test;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ListView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 读取联系人 * 内容提供者提供了对本地数据库访问的接口,由于联系人的信息由多个表存储 * 这里主要使用到了两个表(raw_contacts,data)。所以至少对数据库做两次查询。 * 并需要在清单文件里面配置读取联系人的权限 */public class MainActivity extends AppCompatActivity { private ContentResolver cr; private ListView main_lv; private List<Map<String, Object>> data; private SimpleAdapter simpleAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取内容访问者 cr = getContentResolver(); main_lv = (ListView) findViewById(R.id.main_lv); data = new ArrayList<Map<String,Object>>(); simpleAdapter = new SimpleAdapter(this, data,android.R.layout.simple_list_item_2,new String[]{"names","phones"},new int[]{android.R.id.text1,android.R.id.text2}); main_lv.setAdapter(simpleAdapter); } public void getphone(View view){ //查询时先查联系人的ID,再通过联系人的ID查看联系人具体信息 Cursor cursor= cr.query(Uri.parse("content://com.android.contacts/raw_contacts"),null,null,null,null); while(cursor.moveToNext()){ Map<String,Object> map=new HashMap<String,Object>(); int _id= cursor.getInt(cursor.getColumnIndex("_id")); String dname= cursor.getString(cursor.getColumnIndex("display_name")); map.put("names",dname); //根据ID获取联系人信息 Cursor c=cr.query(Uri.parse("content://com.android.contacts/raw_contacts/"+_id+"/data"),null,null,null,null); while(c.moveToNext()){ String type= c.getString(c.getColumnIndex("mimetype")); String data= c.getString(c.getColumnIndex("data1")); map.put("phones",data); Log.i("test"," "+type+" "+data); } //给集合添加数据 data.add(map); } //通知适配器发生改变 simpleAdapter.notifyDataSetChanged(); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表