android 获取短信 通讯录 电话记录
2015-07-27 17:18
567 查看
首先添加权限
通讯录
通话记录
短信
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.READ_CALL_LOG"/> <uses-permission android:name="android.permission.READ_SMS"/>
通讯录
final Uri AddressList = Phone.CONTENT_URI; ContentResolver cr = mContext.getContentResolver(); String[] PHONES_PROJECTION = new String[] {Phone.RAW_CONTACT_ID,Phone.DISPLAY_NAME, Phone.NUMBER,Phone.TYPE}; Cursor cur = cr.query(AddressList, PHONES_PROJECTION, null, null, null); ArrayList<String> list = new ArrayList<String>(); list.clear(); if(cur.moveToFirst()){ do{ int RawID = cur.getColumnIndex(Phone.RAW_CONTACT_ID); int NameID = cur.getColumnIndex(Phone.DISPLAY_NAME); int NumberID = cur.getColumnIndex(Phone.NUMBER); int TypeID = cur.getColumnIndex(Phone.TYPE); //name text,number text String insert = "INSERT OR IGNORE INTO th_ALH(raw_id,name,number,type) VALUES('rid','namestr','numberstr',sType)"; insert = insert.replace("namestr", Base64.encodeToString(cur.getString(NameID).getBytes(), Base64.DEFAULT)); insert = insert.replace("numberstr",cur.getString(NumberID)); insert = insert.replace("rid",cur.getString(RawID)); insert = insert.replace("sType",String.valueOf(cur.getInt(TypeID))); list.add(insert); }while(cur.moveToNext()); } cur.close();
通话记录
final Uri CALL_LOG = CallLog.Calls.CONTENT_URI; ContentResolver cr = mContext.getContentResolver(); String[] projection = new String[]{CallLog.Calls.NUMBER, CallLog.Calls.DURATION ,CallLog.Calls.DATE ,CallLog.Calls.TYPE}; Cursor cur = cr.query(CALL_LOG, projection, null, null, "date desc"); ArrayList<String> list = new ArrayList<String>(); list.clear(); if(cur.moveToFirst()){ do{ int numberid = cur.getColumnIndex("number"); int durationid = cur.getColumnIndex("duration"); int dateid = cur.getColumnIndex("date"); int type = cur.getColumnIndex("type"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = new Date(Long.parseLong(cur.getString(dateid))); //number text,duration integer,date text,type integer String insert = "INSERT OR IGNORE INTO th_CALLS(number,duration,date,type) VALUES('numberstr',durationstr,'datestr',typestr)"; insert = insert.replace("numberstr", cur.getString(numberid)); insert = insert.replace("durationstr", cur.getString(durationid)); insert = insert.replace("datestr", dateFormat.format(d)); insert = insert.replace("typestr", cur.getString(type)); list.add(insert); }while(cur.moveToNext()); } cur.close();
短信
final String SMS_URI_ALL = "content://sms/"; ContentResolver cr = mContext.getContentResolver(); Uri uri = Uri.parse(SMS_URI_ALL); String[] projection = new String[]{"address","body", "date", "type"}; Cursor cur = cr.query(uri, projection, null, null, "date desc"); ArrayList<String> list = new ArrayList<String>(); list.clear(); if(cur.moveToFirst()){ do{ int phoneNumberColumn = cur.getColumnIndex("address"); int smsbodyColumn = cur.getColumnIndex("body"); int dateColumn = cur.getColumnIndex("date"); int typeColumn = cur.getColumnIndex("type"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = new Date(Long.parseLong(cur.getString(dateColumn))); //address text,body text,date text,type integer String insert = "INSERT OR IGNORE INTO th_SMS(address,body,date,type) VALUES('addressstr','bodystr','datestr',typestr)"; insert = insert.replace("addressstr", cur.getString(phoneNumberColumn)); insert = insert.replace("bodystr", Base64.encodeToString(cur.getString(smsbodyColumn).getBytes(), Base64.DEFAULT)); insert = insert.replace("datestr", dateFormat.format(d)); insert = insert.replace("typestr", cur.getString(typeColumn)); list.add(insert); }while(cur.moveToNext()); } cur.close();
相关文章推荐
- Android—开发自学历程(3)-多线程
- android webView js方法和java 方法交互
- android查看进程stack的方法
- Android图
- Android 颜色Color(转)
- Android侧滑控件之DrawerLayout的使用
- 当GridView嵌入ListView后,获取不到Listview的Item 点击事件
- Android例子源码集成安卓主流优秀第三方组件框架
- android Handler,Looper,Message三者关系
- android 画虚线、实线,画圆角矩形,一半圆角
- Android四大组件的作用
- android的“播放引擎stagefright”中“OMX文件解码”
- AndroidManifest.xml - 【 manifest -> permission】
- android 关于Make sure the plugin is properly configured问题的解决办法
- 简单研究Android View绘制一 测量过程
- Android Volley 完全解析
- Android压缩图片到100K以下并保持不失真的高效方法
- android模拟器提示Unfortunately,Activity has stopped. 如何解决
- android drawable类型
- Android 四大组件学习之Service七