Android获取手机通话记录

1、第一步:安卓手机通话记录是哪个文件

/data/data/com.android.providers.contacts/databases/contacts2.db

手机 Root 后,用 RE 管理器查看这个 SQLite 数据库文件。
如果是来电记录,在这个数据库的 call 表里。

2、第二步:不获取root权限的情况下查看通话记录

1manifest.xml配置相应权限

 
    
    
    


2)代码实现

public classUtil {
 
    /**
     * 利用系统CallLog获取通话历史记录
     * @return
     */
    @SuppressLint("SimpleDateFormat")
    public static StringgetCallHistoryList(Context context, ContentResolver cr){
      
       Cursorcs;
       cs=cr.query(CallLog.Calls.CONTENT_URI, //系统方式获取通讯录存储地址
              new String[]{
              CallLog.Calls.CACHED_NAME,  //姓名
                         CallLog.Calls.NUMBER,    //号码
                         CallLog.Calls.TYPE,  //呼入/呼出(2)/未接
                         CallLog.Calls.DATE,  //拨打时间
                         CallLog.Calls.DURATION   //通话时长                     
                         },null,null,CallLog.Calls.DEFAULT_SORT_ORDER);
       StringcallHistoryListStr="";
       int i=0;
       if(cs!=null &&cs.getCount()>0){
           for(cs.moveToFirst();!cs.isAfterLast() & i<50; cs.moveToNext()){
              StringcallName=cs.getString(0);
              StringcallNumber=cs.getString(1);
              //通话类型
              int callType=Integer.parseInt(cs.getString(2));
              StringcallTypeStr="";
              switch (callType) {
              case CallLog.Calls.INCOMING_TYPE:
                  callTypeStr="呼入";
                  break;
              case CallLog.Calls.OUTGOING_TYPE:
                  callTypeStr="呼出";
                  break;
              case CallLog.Calls.MISSED_TYPE:
                  callTypeStr="未接";
                  break;
              }
              //拨打时间
              SimpleDateFormatsdf= newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              DatecallDate=newDate(Long.parseLong(cs.getString(3)));
              StringcallDateStr=sdf.format(callDate);
              //通话时长
              int callDuration=Integer.parseInt(cs.getString(4));
              int min=callDuration/60;
              int sec=callDuration%60;
              StringcallDurationStr=min+"分"+sec+"秒";
              StringcallOne="类型:" + callTypeStr + ", 称呼:" + callName + ", 号码:"
                         +callNumber + ", 通话时长:" + callDurationStr + ", 时间:" + callDateStr
                         +"\n---------------------\n";
      
              callHistoryListStr+=callOne;
              i++;
           }
       }
      
       return callHistoryListStr;
    }
}


3)使用

       TextViewtv_callHistory=(TextView) getView().findViewById(R.id.id_tv_content1);
       tv_callHistory.setText("通讯记录");
      
       //获取通话记录
       ContentResolvercr;
       cr=getActivity().getContentResolver();
       StringcallHistoryListStr=Util.getCallHistoryList(null, cr);
       tv_callHistory.setTextSize(12.0f);
       tv_callHistory.setText(callHistoryListStr);


 

你可能感兴趣的:(Android,开发基础)