Android手机用户隐私获取,包括读取通讯录、读取通话记录、读取浏览器历史记录、读取手机短信


MainActivity.class 

package com.example.privateinformation;import android.app.Activity;import android.os.Bundle;import android.util.Log;import com.githang.statusbar.StatusBarCompat;import java.util.ArrayList;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        StatusBarCompat.setStatusBarColor(this, getResources().getColor(R.color.home_fill), false);        PrivateDataCatch dc = new PrivateDataCatch(getApplicationContext());        //获取通讯录        ArrayList phoneContacts = dc.getPhoneContacts();        Log.e("Length phoneContacts", "联系人个数:" + phoneContacts.size());        for (int i = 0; i < phoneContacts.size(); i++) {            Log.i("phoneContacts",phoneContacts.get(i));        }      ArrayList simContacts = dc.getSIMContacts();      Log.e("Length simContacts",""+simContacts.size());      for(int i=0;i;i++){            Log.i("simContacts",simContacts.get(i));      }        ArrayList callLogs = dc.getCallLogs();        //获取通话记录        Log.e("Length callLogs", "通话记录条数:" + callLogs.size());        for (int i = 0; i < callLogs.size(); i++) {            Log.i("callLogs", callLogs.get(i));        }      ArrayList browserHistory = dc.getBrowserHistory();      Log.e("Length browserHistory",""+browserHistory.size());      for(int i=0;i;i++){         Log.i("browserHistory",browserHistory.get(i));      }        //获取短信        ArrayList smsInPhone = dc.getSmsInPhones();        Log.e("Length smsInPhone", "短信条数:" + smsInPhone.size());        for (int i = 0; i < smsInPhone.size(); i++) {           Log.i("smsInPhone", smsInPhone.get(i));        }    }}


Privateinformation.class

   
   
 


package com.example.privateinformation;import android.annotation.SuppressLint;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.provider.CallLog;import android.provider.ContactsContract.CommonDataKinds.Phone;import android.text.TextUtils;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;public class PrivateDataCatch {   public String[] cltype = {"已接电话","已接电话","已拨电话","未接来电"};   public String[] smstype = {"接收的","接收的","发送的","发送的"};   private Context mContext;   public PrivateDataCatch(Context mContext){      this.mContext = mContext;   }   /**    * 获取手机通讯录 包括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;   }}


权限:

android:name="android.permission.READ_CONTACTS"/>android:name="android.permission.READ_SMS" />android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>android:name="android.permission.READ_CALL_LOG"/>


源码下载:http://download.csdn.net/download/qq_31939617/9935681

更多相关文章

  1. Android发送短信功能代码
  2. android权限管理
  3. android小程序 查询电话号码信息
  4. Android打电话&发短信
  5. Android 应用获取通知栏权限
  6. Android的权限机制之—— “沙箱”机制sharedUserId跟签名

随机推荐

  1. [置顶] Android学习之Build环境初探
  2. Icenium:Doug Seven谈针对iOS与Android构
  3. 编译时注解之butterknife的简单实现
  4. Android解决应用崩溃后重启的问题,以及与b
  5. android的UI中include、merge和viewstub
  6. Android中 的各种Adapter 整理
  7. Android学习札记39:关于安全退出已创建多
  8. Android(安卓)UI 设计谨记
  9. Android直播开发之旅(16):使用FFmpeg保存
  10. 如题,打算自己编个小游戏发在Android(安卓