android 中电话记录,通讯录与短信的查询
2015-03-10 18:46
417 查看
首先看通讯录,在android中涉及通讯录的表有:
raw_contacts data 与 mimetypes
主要涉及的sql语句:
查询记录类型:
select id,mimitype from mimetypes;
查询显示的名称:
select _id,display from raw_contacts;
查询具体的数据:
select raw_contacts_id,mimitype_id,data1 from data;
访问raw_contacts表中数据的uri地址:
String uri_contacts=
“content://com.android.contacts/raw_contacts”;
访问data表中的数据的uri地址:
String uri_contacts_data = “content://com.android.contacts/data”;
访问电话号码的uri地址:
访问短信的uri地址:
显示通讯录:
最后添加读写权限:
读取邮件信息:
最后添加读写权限:
对联系人进行操作:
查询数据:
长按listview条目删除:
添加数据:
raw_contacts data 与 mimetypes
主要涉及的sql语句:
查询记录类型:
select id,mimitype from mimetypes;
查询显示的名称:
select _id,display from raw_contacts;
查询具体的数据:
select raw_contacts_id,mimitype_id,data1 from data;
访问raw_contacts表中数据的uri地址:
String uri_contacts=
“content://com.android.contacts/raw_contacts”;
访问data表中的数据的uri地址:
String uri_contacts_data = “content://com.android.contacts/data”;
访问电话号码的uri地址:
[code] public static String uri_contacts_phones = "content://com.android.contacts/data/phones";
访问短信的uri地址:
[code] public static String uri_contacts_emails = "content://com.android.contacts/data/emails";
显示通讯录:
[code] listview 适配器的编写: private SimpleCursorAdapter getAdapter() { // TODO Auto-generated method stub cursor=this.resolver.query(Uri.parse("content://call_log/calls"), new String[]{"_id","number","type","date"}, null, null, null); this.adapter=new SimpleCursorAdapter(this, R.layout.item,cursor,new String[]{"number","type","date"}, new int[]{R.id.number,R.id.type,R.id.date}){ @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view=super.getView(position, convertView, parent); ///设置时间的显示格式 TextView date_view=(TextView) view.findViewById(R.id.date); String Date_str=date_view.getText().toString().trim(); long date=Long.parseLong(Date_str); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str=sdf.format(new Date(date)); date_view.setText(str); TextView type_view=(TextView) view.findViewById(R.id.type); String Type_str=type_view.getText().toString().trim(); int type=Integer.parseInt(Type_str); switch(type){ case 1: type_view.setText("接听电话"); break; case 2: type_view.setText("呼叫电话"); break; case 3: type_view.setText("未接电话"); break; } return view; } }; return adapter; }
最后添加读写权限:
[code] <uses-permission android:name="android.permission.READ_CALL_LOG"/> <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
读取邮件信息:
[code]private SimpleCursorAdapter getAdapter() { // TODO Auto-generated method stub cursor=this.resolver.query(Uri.parse("content://sms"), new String[]{"_id","address","type","date","body"}, null, null, null); this.adapter=new SimpleCursorAdapter(this, R.layout.item,cursor,new String[]{"address","type","date","body"}, new int[]{R.id.address,R.id.type,R.id.date,R.id.body}){ @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view=super.getView(position, convertView, parent); ///设置时间的显示格式 TextView date_view=(TextView) view.findViewById(R.id.date); String Date_str=date_view.getText().toString().trim(); long date=Long.parseLong(Date_str); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str=sdf.format(new Date(date)); date_view.setText(str); TextView type_view=(TextView) view.findViewById(R.id.type); String Type_str=type_view.getText().toString().trim(); int type=Integer.parseInt(Type_str); switch(type){ case 1: type_view.setText("接收短信"); break; case 2: type_view.setText("发送短信"); break; } return view; } }; return adapter; }
最后添加读写权限:
[code] <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.WRITE_SMS"/>
对联系人进行操作:
查询数据:
[code]public List<Map<String,Object>> getData(){ List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); Cursor contact_cursor=this.resolver.query(Uri.parse(uri_contacts), new String[]{"_id","display_name"},null,null,null); while(contact_cursor.moveToNext()){ int _id=contact_cursor.getInt(contact_cursor.getColumnIndexOrThrow("_id")); String display_name=contact_cursor.getString(contact_cursor.getColumnIndexOrThrow("display_name")); Cursor phone_cursor=this.resolver.query(Uri.parse(uri_contacts_phones), new String[]{"raw_contact_id","data1"}, "raw_contact_id=?", new String[]{_id+""},null); StringBuilder sb_phone=new StringBuilder(); while(phone_cursor.moveToNext()){ String phone_code=phone_cursor.getString(phone_cursor.getColumnIndexOrThrow("data1")); sb_phone.append(phone_code+" "); } Cursor email_cursor=this.resolver.query(Uri.parse(uri_contacts_emails),new String[]{"raw_contact_id","data1"}, "raw_contact_id=?", new String[]{_id+""}, null); StringBuilder sb_email=new StringBuilder(); while(email_cursor.moveToNext()){ String email_str=email_cursor.getString(email_cursor.getColumnIndexOrThrow("data1")); sb_email.append(email_str+" "); } Map<String,Object> map=new HashMap<String,Object>(); map.put("_id", _id); map.put("display_name",display_name); map.put("phone",sb_phone.toString()); map.put("email",sb_email.toString()); list.add(map); } return list; }
长按listview条目删除:
[code] listview.setOnItemLongClickListener(new OnItemLongClickListener() { public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Map<String,Object> map=(Map<String, Object>) parent.getItemAtPosition(position); String display_name=(String) map.get("display_name"); int count=resolver.delete(Uri.parse(uri_contacts),"display_name=?", new String[]{display_name}); //重新查询数据,更新适配器 adapter=new SimpleAdapter(MainActivity.this, getData(),R.layout.item, new String[]{"display_name","phone","email"},new int []{R.id.display_name,R.id.phone_code,R.id.email}); listview.setAdapter(adapter); return count>0; } });
添加数据:
[code]//向数据表中添加数据 //向表中插入数据获取主键 ContentValues values=new ContentValues(); Uri uri=resolver.insert(Uri.parse(uri_contacts),values); long id=ContentUris.parseId(uri); values.put("data1", display_name); values.put("raw_contact_id", id); values.put("mimetype", "vnd.android.cursor.item/name"); resolver.insert(Uri.parse(uri_contacts_data),values); values.clear(); values.put("data1", email); values.put("raw_contact_id", id); values.put("mimetype", "vnd.android.cursor.item/email_v2"); resolver.insert(Uri.parse(uri_contacts_data),values); values.clear(); values.put("data1", phone); values.put("raw_contact_id", id); values.put("mimetype", "vnd.android.cursor.item/phone_v2"); resolver.insert(Uri.parse(uri_contacts_data),values); //重新查询数据,更新适配器 adapter=new SimpleAdapter(MainActivity.this, getData(),R.layout.item, new String[]{"display_name","phone","email"},new int []{R.id.display_name,R.id.phone_code,R.id.email}); listview.setAdapter(adapter);
相关文章推荐
- android 获取短信 通讯录 电话记录
- Android通讯录、通话记录、短信、应用等模糊查询方法
- Android通讯录管理(获取联系人、通话记录、短信消息)(三)
- Android通讯录管理(获取联系人、通话记录、短信消息)(三)
- Android手机用户隐私获取,包括读取通讯录、读取通话记录、读取浏览器历史记录、读取手机短信
- Android实战—实现自动读取通讯录和通话记录切换,ViewPage滑屏效果,可拨打电话
- 无需越狱,Android通话记录、通讯录、短信同步到iphone6
- 关于android 联系人,短信,电话记录,需要的uri,数据库中获取的小结,请看注释
- Android通讯录管理(获取联系人、通话记录、短信消息)(一)
- Android通讯录管理(获取联系人、通话记录、短信消息)(三)
- Android获取手机短信和通话记录及通讯录
- Android通讯录管理(获取联系人、通话记录、短信消息)(二)
- Android通讯录管理(获取联系人、通话记录、短信消息)(二)
- Android通讯录管理(获取联系人、通话记录、短信消息)(二)
- Android通讯录管理(获取联系人、通话记录、短信消息)
- Android获取手机短信和通话记录及通讯录
- Android 电话查询(扩展成通讯录)
- Android通讯录管理(获取联系人、通话记录、短信消息)(一)
- Android手机用户隐私获取,包括读取通讯录、读取通话记录、读取浏览器历史记录、读取手机短信
- Android Call Log and SMS Delete 电话记录和短信删除