最近正好做到有关Android用户的隐私内容获取的问题,包括读取通讯录、读取通话记录、读取浏览器历史记录、读取手机短信;现在把完整的解决代码贴上

 其中,需要权限如下:

                                   

详细代码如下:

/** * 获取手机通讯录 包括name(名称)和phoneNumber(号码)以;分隔 * @return */public ArrayList getPhoneContacts(){ArrayList contacts = new ArrayList();try{ContentResolver resolver = mContext.getContentResolver();Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,null, null, null, null);if(phoneCursor!=null){while(phoneCursor.moveToNext()){int nameIndex = phoneCursor.getColumnIndex(Phone.DISPLAY_NAME);String name = phoneCursor.getString(nameIndex);String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(Phone.NUMBER));if(TextUtils.isEmpty(phoneNumber)){continue;}contacts.add(name+";"+phoneNumber);}phoneCursor.close();  }}catch(Exception e){e.printStackTrace();}return contacts;}/** * 获取SIM卡通讯录 包括name(名称)和phoneNumber(号码)以;分隔 * @return */public ArrayList getSIMContacts(){ArrayList contacts = new ArrayList();try{ContentResolver resolver = mContext.getContentResolver();  Uri uri = Uri.parse("content://icc/adn");  Cursor phoneCursor = resolver.query(uri, null, null, null, null);if(phoneCursor!=null){while(phoneCursor.moveToNext()){String name = phoneCursor.getString(phoneCursor.getColumnIndex("name"));String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex("number"));if(TextUtils.isEmpty(phoneNumber)){continue;}contacts.add(name+";"+phoneNumber);}phoneCursor.close();  }}catch(Exception e){e.printStackTrace();}return contacts;}/** * 获取通话记录包括type date cachedName number * @return */@SuppressLint("SimpleDateFormat")public ArrayList getCallLogs(){ArrayList callLogs = new ArrayList();String[] projection = {CallLog.Calls.DATE, // 日期                  CallLog.Calls.NUMBER, // 号码                  CallLog.Calls.TYPE, // 类型                  CallLog.Calls.CACHED_NAME, // 名字  };SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");          Date date;        try{        ContentResolver cr = mContext.getContentResolver();            Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, projection, null, null,CallLog.Calls.DEFAULT_SORT_ORDER);            if (cursor != null && cursor.getCount() > 0){            cursor.moveToFirst();             while(cursor.moveToNext()){            date = new Date(cursor.getLong(cursor                              .getColumnIndex(CallLog.Calls.DATE)));                      String number = cursor.getString(cursor                              .getColumnIndex(CallLog.Calls.NUMBER));                      int type = cursor.getInt(cursor                              .getColumnIndex(CallLog.Calls.TYPE));                      String cachedName = cursor.getString(cursor                              .getColumnIndex(CallLog.Calls.CACHED_NAME));                    String callLog = cltype[type]+";"+sfd.format(date)+";"+cachedName+";"+number;                    callLogs.add(callLog);                            }            cursor.close();            }        }catch(Exception e){        e.printStackTrace();        }       return callLogs;}/** * 获取浏览器历史记录包括date title url * @return */@SuppressLint("SimpleDateFormat")public ArrayList getBrowserHistory(){ArrayList browserHistory = new ArrayList();try{ContentResolver contentResolver = mContext.getContentResolver(); Cursor cursor = contentResolver.query( Uri.parse("content://browser/bookmarks"), new String[] { "title", "url", "date" }, "date!=?",                  null, "date desc");SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");          Date date;if(cursor != null ){while(cursor.moveToNext()) {date = new Date(cursor.getLong(cursor.getColumnIndex("date")));String title = cursor.getString(cursor.getColumnIndex("title"));String url = cursor.getString(cursor.getColumnIndex("url"));String browserhistory = sfd.format(date)+";"+title+";"+url;browserHistory.add(browserhistory);}cursor.close();}}catch(Exception e){e.printStackTrace();}return browserHistory;}/** * 获取手机短信 * @return */@SuppressLint("SimpleDateFormat")public ArrayList getSmsInPhones(){ArrayList smsInPhones = new ArrayList();final String SMS_URI_ALL   = "content://sms/";          try{    ContentResolver cr = mContext.getContentResolver();          String[] projection = new String[]{"_id",         "address",  //号码        "person",   //姓名                "body",     //短信内容                "date",     //日期                "type"};    //短信类型        Uri uri = Uri.parse(SMS_URI_ALL);          Cursor cur = cr.query(uri, projection, null, null, "date desc");        if (cur.moveToFirst()){        int nameColumn = cur.getColumnIndex("person");              int phoneNumberColumn = cur.getColumnIndex("address");              int smsbodyColumn = cur.getColumnIndex("body");              int dateColumn = cur.getColumnIndex("date");              int typeColumn = cur.getColumnIndex("type");            while(cur.moveToNext()){            String name = cur.getString(nameColumn);                           String phoneNumber = cur.getString(phoneNumberColumn);              String smsbody = cur.getString(smsbodyColumn).replaceAll(";", ".");                                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");                  Date d = new Date(Long.parseLong(cur.getString(dateColumn)));                  String date = dateFormat.format(d);                 int typeId = cur.getInt(typeColumn);                String type = smstype[typeId];                String smsInPhone = type+";"+date+";"+name+";"+phoneNumber+";"+smsbody;                smsInPhones.add(smsInPhone);            }            cur.close();        }    }catch(Exception e){    e.printStackTrace();    }return smsInPhones;}

项目包下载地址 http://download.csdn.net/detail/u011342532/7961491

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. 读取android手机流量信息
  3. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  4. android 获取唯一标识
  5. android拍照与读取相册
  6. Android(安卓)热点开关状态的判断和获取热点ssid
  7. Android软键盘适配问题
  8. AIR Native Extension的使用(Android)一 : 打包ane
  9. android之BitMap

随机推荐

  1. Android(安卓)热修复一(热修复流程原理)
  2. Android(安卓)DOM解析xml
  3. android 制作.9.png图片
  4. Android(安卓)VS iPad
  5. 谷歌评选出第二届Android开发者竞赛获胜
  6. Android(安卓)spinner取值
  7. android app的启动优化方法
  8. android開發---周總結2
  9. Android(安卓)TextView--项目开发少不了
  10. Android在专利战中败北后会发生什么?