获取通话记录


<!-- 读取通话记录 -->
<uses-permission android:name="android.permission.READ_CALL_LOG" />
/**
 * 读取数据
 *
 * @return 读取到的数据
 */
private List<HashMap<String, String>> getDataList() {
    // 1.获得ContentResolver
    ContentResolver resolver = getContentResolver();
    // 2.利用ContentResolverquery方法查询通话记录数据库
    /**
     * @param uri 需要查询的URI,(这个URIContentProvider提供的)
     * @param projection 需要查询的字段
     * @param selection sql语句where之后的语句
     * @param selectionArgs ?占位符代表的数据
     * @param sortOrder 排序方式
     *
     */
    @SuppressLint("MissingPermission") Cursor cursor = resolver.query(CallLog.Calls.CONTENT_URI, // 查询通话记录的URI
            new String[] { CallLog.Calls.CACHED_NAME// 通话记录的联系人
                    , CallLog.Calls.NUMBER// 通话记录的电话号码
                    , CallLog.Calls.DATE// 通话记录的日期
                    , CallLog.Calls.DURATION// 通话时长
                    , CallLog.Calls.TYPE }// 通话类型
            , null, null, CallLog.Calls.DEFAULT_SORT_ORDER// 按照时间逆序排列,最近打的最先显示
    );
    // 3.通过Cursor获得数据
    List<HashMap<String, String>> list = new ArrayList<>();
    while (cursor.moveToNext()) {
        String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
        String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
        long dateLong = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE));
        String date = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date(dateLong));
        int duration = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.DURATION));
        int type = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE));
        String typeString = "";
        switch (type) {
            case CallLog.Calls.INCOMING_TYPE:
                typeString = "打入";
                break;
            case CallLog.Calls.OUTGOING_TYPE:
                typeString = "打出";
                break;
            case CallLog.Calls.MISSED_TYPE:
                typeString = "未接";
                break;
            default:
                break;
        }
        HashMap<String, String> map = new HashMap<>();
        map.put("name", (name == null) ? "未备注联系人" : name);
        map.put("number", number);
        map.put("date", date);
        map.put("duration", (duration / 60) + "" + (duration % 60) + "");
        map.put("type", typeString);
        list.add(map);
    }
    Gson gson = new Gson();
    String json=gson.toJson(list);
    Log.e("json",json);
    Log.e("list",list.size()+"");

    return list;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值