ContentProvider列出联系人姓名,电话到ListActivity
来源:互联网 发布:gef软件下载 编辑:程序博客网 时间:2024/04/30 17:09
要注意的是联系人的姓名和电话号码不在同一个URI中。
姓名所在URI: android.provider.ContactsContract.Contacts.CONTENT_URI
电话所在URI:android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI
public class ContactActivity extends ListActivity { private ContentResolver resolver ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); resolver = getContentResolver() ; } @Override protected void onResume() { super.onResume(); /* 1.URI * 2.投影:数据库中其中的几个列(null查询全部的) * 3.条件 * 4.参数 * 5.排序 */ //联系人的ID,联系人的姓名 String projection[]={Contacts._ID,Contacts.DISPLAY_NAME}; Cursor infoCursor = resolver.query(Contacts.CONTENT_URI, projection, null, null, null) ; //电话的ID,电话对应的联系人ID,电话号码的具体内容 String [] column ={Phone._ID,Phone.CONTACT_ID,Phone.DATA} ; final Cursor phoneCursor = resolver.query(Phone.CONTENT_URI, column,null, null,null); @SuppressWarnings("deprecation") CursorAdapter adapter = new CursorAdapter(this,infoCursor) { @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { //导入自定义的XML文件 View view = getLayoutInflater().inflate(R.layout.contacts_item, null) ; Holder holder = new Holder(); holder.idTv = (TextView) view.findViewById(R.id.id_tv) ; holder.nameTv = (TextView) view.findViewById(R.id.name_tv) ; holder.phoneTv = (TextView) view.findViewById(R.id.phone_tv) ; view.setTag(holder); return view; } @Override public void bindView(View view, Context context, Cursor cursor) { Holder holder = (Holder) view.getTag() ; int contactId = cursor.getInt(0) ; holder.idTv.setText(cursor.getString(0)); holder.nameTv.setText(cursor.getString(1)); StringBuffer sb = new StringBuffer() ; /* * 列出所有的电话号码,有的联系人有多个号码 */ //有数据时一直是true,cursor第一次指向第一条数据之前,后面都是指向最后一条数据之后,执行moveToFirst都是true if(phoneCursor.moveToFirst()){ do{ int pid = phoneCursor.getInt(1) ; //联系人ID等于电话号码对应的联系人ID if(pid == contactId){ sb.append(phoneCursor.getString(2)).append(" ") ; } }while(phoneCursor.moveToNext());//移到最后时退出循环 } holder.phoneTv.setText(sb); } }; setListAdapter(adapter); } //内部类,所有的控件集合 class Holder { TextView idTv ; TextView nameTv ; TextView phoneTv ; }}
查看虚拟机的联系人:
C:\>adb shellcd /data/datacd com.android.providers.contactscd databasessqlite3 contact2.db.tables.headers on.mode columnselect * from data ;
- ContentProvider列出联系人姓名,电话到ListActivity
- Android读取联系人姓名、电话
- 查询联系人姓名和电话
- 获取联系人姓名和电话
- 获取手机联系人姓名,电话
- Android获取联系人姓名和电话
- 手机联系人信息获取(头像,电话,姓名)
- Android获取手机联系人姓名电话
- 读取手机联系人,复杂(姓名,电话,邮箱)
- ContentProvider之 获得手机联系人姓名及ID
- Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
- Android 2.0读取所有联系人姓名与电话
- android:获取联系人信息(姓名和电话)
- android示例之取得联系人的信息(姓名、电话)
- android获取手机联系人信息(电话,邮箱,姓名,头像)
- android:获取联系人原理(姓名和电话)详解
- 【Android】利用AutoCompleteTextView控件联系人自动补全与根据联系人姓名查询电话
- android获取联系人权限,然后从日志中打印输出联系人姓名和电话
- 控制浏览器缓存
- Javascript 中的非空判断 undefined,null, NaN的区别
- C#基础数据类型与字节数组(内存中的数据格式)相互转换(BitConverter 类)
- 敏感词替换
- Android Jni 用动态库的加载与卸载函数说明
- ContentProvider列出联系人姓名,电话到ListActivity
- document read in ios
- 统计网站的访问次数
- 错误集锦--工作篇(1)
- 显示用户上次的访问时间
- @SuppressWarnings("unchecked")具体含义
- 压缩数据
- PHP判断远程文件是否存在的几种方法
- 用户自动登录