很多人在做手机联系人的apk时会遇到,如何获取手机联系人数据库的问题,在这里我就简单的将代码写一下
package com.example.song.lx_day14_contacts; import androID.content.ContentResolver; import androID.database.Cursor; import androID.net.Uri; import androID.os.Bundle; import androID.support.v7.app.AppCompatActivity; import androID.Widget.ListVIEw; import androID.Widget.SimpleAdapter; import androID.Widget.TextVIEw; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 获取手机通讯录信息 展示并且修改 * ListvIEw * simpleadapter * List<Map<String,String>> */ public class MainActivity extends AppCompatActivity { private String uri_raw = "content://com.androID.contacts/raw_contacts"; //直接获取data表中的 数据类型是phone private String uri_phone = "content://com.androID.contacts/data/phones"; //直接获取data表中数据类型是emali private String uri_emalis = "content://com.androID.contacts/data/emails"; private String uri_data = "content://com.androID.contacts/data"; private ListVIEw ListVIEw; private TextVIEw empty; private SimpleAdapter adapter; private List<Map<String,String>> data = new ArrayList<>(); private ContentResolver contentResolver;//用来访问数据 @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); ListVIEw = ((ListVIEw) findVIEwByID(R.ID.lv)); empty = ((TextVIEw) findVIEwByID(R.ID.empty)); ListVIEw.setEmptyVIEw(empty);//设置空视图 adapter = new SimpleAdapter(this,data,R.layout.item,new String[]{"_ID","display_name","data1"},new int[]{R.ID.ID,R.ID.name,R.ID.number}); ListVIEw.setAdapter(adapter); contentResolver = getContentResolver(); reloadListVIEw(); } private voID reloadListVIEw() { data.clear(); data.addAll(selectData()); adapter.notifyDataSetChanged(); } //查询工作 用于查询data raw_contact标 返回List数据 在刷新adapter private List<Map<String,String>> selectData() { /** * 1.先查询raw 获取_ID查出所有联系人 * 2.循环查询-->根据_ID去data表中(_ID=raw_contacts_ID)查询 data1数据 */ Cursor cursor = contentResolver.query(Uri.parse(uri_raw),"display_name"},null,null); //cursor返回的cursor数量不定 List<Map<String,String>> List = new ArrayList<>(); while (cursor != null && cursor.movetoNext()) { String _ID = cursor.getString(0); String displayname = cursor.getString(1); Map<String,String> map = new HashMap<>(); map.put("_ID",_ID); map.put("display_name",displayname); //根据_ID 去data查手机号 Cursor cursor1 = contentResolver.query(Uri.parse(uri_phone),new String[]{"data1"},"raw_contact_ID=?",new String[]{_ID},null); //循环拿到手机号 StringBuffer sb = new StringBuffer(); //这里循环拿到手机号是因为有时联系人中 你可能一个人有几个电话 while (cursor1 != null && cursor1.movetoNext()) { sb.append(cursor1.getString(0) + "\n"); } cursor1.close(); map.put("data1",sb.toString()); List.add(map); } cursor.close(); return List; } }
在这里不要忘记了添加权限
<uses-permission androID:name="androID.permission.READ_CONTACTS" /> <uses-permission androID:name="androID.permission.WRITE_CONTACTS" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的android如何获取手机联系人的数据库示例代码全部内容,希望文章能够帮你解决android如何获取手机联系人的数据库示例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)