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. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. 如何使Android应用程序获取系统权限
  3. 与Android的系统打交道
  4. Android(安卓)加载大图片是出现的 OutOfMemoryError问题
  5. android 6.0及以下获取wifi mac地址
  6. android 图片的浏览、缩放、拖动和自动居中示例
  7. android Environment 常用方法(获取存储目录)
  8. android,两个汉字转拼音工具!
  9. Android网络操作

随机推荐

  1. Android BroadcastReceiver(广播)实现消
  2. Android官方架构组件Paging:分页库的设计
  3. Android隐藏状态栏 全屏
  4. android中JNI使用探究
  5. [Android Studio 权威教程]打包、生成jks密
  6. Android和iPhone应用程序界面布局示例
  7. 详述Google针对Android平板App发布的十大
  8. Android平台中的安全编程
  9. Android studio Gradle home can not be
  10. Android图形显示系统——概述