Android:选择通话记录

红色:未接电话和挂断

 

1、权限:

  private void initPhonePermissions() {
        RxPermissions permissions = new RxPermissions(this);
        permissions.request(
                Manifest.permission.READ_CALL_LOG
        ).subscribe(new BaseObserver<Boolean>(context, false) {
            @Override
            public void receiveResult(Boolean result) {
                if (result) {
                   
                } else {
                    ToastUtil.showShortToast("请授予相应的权限,否则无法使用");
                }
            }
        });
    }

2、获取通话记录的类

public class CallHistoryHelper {

    public static String getCallHistoryStr(Context context) {
        String callHistoryJson = "";

        callHistoryJson= GetHostCommlog(context);

        return callHistoryJson;
    }

    private static JSONObject GetData(Cursor aCursor) {
        String date = TimeUtils.longToString(Long.parseLong(aCursor.getString(aCursor.getColumnIndex("date"))), TimeUtils.FORMAT_DATE_TIME_FULL);
        Long duration=aCursor.getLong(aCursor.getColumnIndex("duration"));
        String name = aCursor.getString(aCursor.getColumnIndex("name"));
        String type = aCursor.getString(aCursor.getColumnIndex("type"));
        if(name==null||name.equals(""))
        {
            name = aCursor.getString(aCursor
                    .getColumnIndex("number"));
        }

        String number=aCursor.getString(aCursor
                .getColumnIndex("number"));

        JSONObject obj=new JSONObject();

        try {
            obj.put("date", date);
            obj.put("duration", duration);
            obj.put("name", name);
            obj.put("number", number);
            obj.put("type", type);
        } catch (JSONException e) {
  
            e.printStackTrace();
        }

        return obj;
    }

    private static String GetHostCommlog(
            Context iContext) {
        JSONArray AllHistory=new JSONArray();

        Cursor cursor = iContext.getContentResolver().query(
                android.provider.CallLog.Calls.CONTENT_URI,
                new String[] { "number", "name", "type", "date","duration" }, null, null,
                "date DESC");

        while (cursor.moveToNext()) {
            AllHistory.put(GetData(cursor));


        }
        cursor.close();

        return AllHistory.toString();
    }
}

3、获取列表

 String callHistoryStr = CallHistoryHelper.getCallHistoryStr(context);
        List<CallHistoryBean> callHistoryList = JSON.parseArray(callHistoryStr, CallHistoryBean.class);
        LogUtil.d("allContactsList:" + JSON.toJSONString(callHistoryList));

4、type值

if (type.equals("1")) {
  
} else if (type.equals("2")) {//已拨
   
} else if (type.equals("3")) {//未接
  
} else if (type.equals("5")) {//挂断
   
} else {
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值