android如何获取手机联系人的数据库示例代码
很多人在做手机联系人的apk时会遇到,如何获取手机联系人数据库的问题,在这里我就简单的将代码写一下
packagecom.example.song.lx_day14_contacts;
importandroid.content.ContentResolver;
importandroid.database.Cursor;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.widget.ListView;
importandroid.widget.SimpleAdapter;
importandroid.widget.TextView;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
/**
*获取手机通讯录信息展示并且修改
*listview
*simpleadapter
*list<Map<String,String>>
*/
publicclassMainActivityextendsAppCompatActivity{
privateStringuri_raw="content://com.android.contacts/raw_contacts";
//直接获取data表中的数据类型是phone
privateStringuri_phone="content://com.android.contacts/data/phones";
//直接获取data表中数据类型是emali
privateStringuri_emalis="content://com.android.contacts/data/emails";
privateStringuri_data="content://com.android.contacts/data";
privateListViewlistView;
privateTextViewempty;
privateSimpleAdapteradapter;
privateList<Map<String,String>>data=newArrayList<>();
privateContentResolvercontentResolver;//用来访问数据
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=((ListView)findViewById(R.id.lv));
empty=((TextView)findViewById(R.id.empty));
listView.setEmptyView(empty);//设置空视图
adapter=newSimpleAdapter(this,data,R.layout.item,newString[]{"_id","display_Name","data1"},newint[]{R.id.id,R.id.name,R.id.number});
listView.setAdapter(adapter);
contentResolver=getContentResolver();
reloadListView();
}
privatevoidreloadListView(){
data.clear();
data.addAll(selectData());
adapter.notifyDataSetChanged();
}
//查询工作用于查询dataraw_contact标返回list数据在刷新adapter
privateList<Map<String,String>>selectData(){
/**
*1.先查询raw获取_id查出所有联系人
*2.循环查询-->根据_id去data表中(_id=raw_contacts_id)查询data1数据
*/
Cursorcursor=contentResolver.query(Uri.parse(uri_raw),newString[]{"_id","display_name"},null,null,null);
//cursor返回的cursor数量不定
List<Map<String,String>>list=newArrayList<>();
while(cursor!=null&&cursor.moveToNext()){
String_id=cursor.getString(0);
StringdisplayName=cursor.getString(1);
Map<String,String>map=newHashMap<>();
map.put("_id",_id);
map.put("display_Name",displayName);
//根据_id去data查手机号
Cursorcursor1=contentResolver.query(Uri.parse(uri_phone),newString[]{"data1"},"raw_contact_id=?",newString[]{_id},null);
//循环拿到手机号
StringBuffersb=newStringBuffer();
//这里循环拿到手机号是因为有时联系人中你可能一个人有几个电话
while(cursor1!=null&&cursor1.moveToNext()){
sb.append(cursor1.getString(0)+"\n");
}
cursor1.close();
map.put("data1",sb.toString());
list.add(map);
}
cursor.close();
returnlist;
}
}
在这里不要忘记了添加权限
<uses-permissionandroid:name="android.permission.READ_CONTACTS"/> <uses-permissionandroid:name="android.permission.WRITE_CONTACTS"/>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。