android如何获取手机联系人的数据库示例代码
程序员文章站
2023-12-20 19:03:04
很多人在做手机联系人的apk时会遇到,如何获取手机联系人数据库的问题,在这里我就简单的将代码写一下
package com.example.song.lx_day...
很多人在做手机联系人的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), new string[]{"_id", "display_name"}, null, 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" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。