Android小米(miui)获取通话记录为null解决办法

在开发中发现,查询通话记录时使用
contentResolver.query(
CallLog.Calls.CONTENT_URI, Columns, null,
null,CallLog.Calls.DATE+” desc”);
在小米真机上查询出来的结果为空

解决办法:

private List getRecordForMiui(){        ContentResolver contentResolver = getContentResolver();        List mRecordList = new ArrayList();        //使用具体的路径而不是引用CallLog.Calls.CONTENT_URI        Uri uri = Uri.parse("content://call_log/calls");        Cursor cursor = null;        try {            cursor = contentResolver.query(                    // CallLog.Calls.CONTENT_URI, Columns, null,                    // null,CallLog.Calls.DATE+" desc");                    uri, null, null, null,                    CallLog.Calls.DATE + " desc");            if (cursor == null)                return null;            while (cursor.moveToNext()) {                RecordEntity record = new RecordEntity();                record.name = cursor.getString(cursor                        .getColumnIndex(CallLog.Calls.CACHED_NAME));                record.number = cursor.getString(cursor                        .getColumnIndex(CallLog.Calls.NUMBER));                record.type = cursor.getInt(cursor                        .getColumnIndex(CallLog.Calls.TYPE));                record.lDate = cursor.getLong(cursor                        .getColumnIndex(CallLog.Calls.DATE));                record.duration = cursor.getLong(cursor                        .getColumnIndex(CallLog.Calls.DURATION));                record._new = cursor.getInt(cursor                        .getColumnIndex(CallLog.Calls.NEW));                Log.e("aaa", record.toString());//                      int photoIdIndex = cursor.getColumnIndex(CACHED_PHOTO_ID);//                      if (photoIdIndex >= 0) {//                          record.cachePhotoId = cursor.getLong(photoIdIndex);//                      }                mRecordList.add(record);            }        } finally {            if (cursor != null) {                cursor.close();            }            return mRecordList;        }    }

通话记录实体类

/** * Created by lxh on 2016/11/23. */public class RecordEntity {    String name;    String number;    int type;    long lDate;    long duration;    int _new;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getNumber() {        return number;    }    public void setNumber(String number) {        this.number = number;    }    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }    public long getlDate() {        return lDate;    }    public void setlDate(long lDate) {        this.lDate = lDate;    }    public long getDuration() {        return duration;    }    public void setDuration(long duration) {        this.duration = duration;    }    public int get_new() {        return _new;    }    public void set_new(int _new) {        this._new = _new;    }}

最后
注意添加权限

<uses-permission android:name="android.permission.READ_CALL_LOG"/>    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>

总结:
miui必须使用具体的uri路径

更多相关文章

  1. Android 同时播放缩放动画和位移动画 时, 位移的路径会发生偏移.
  2. Android根据 uri 获得文件真实路径
  3. 简单的 Android 拍照并显示以及获取路径后上传
  4. Android 混淆提示 java.io.FileNotFoundException: ...\proguar
  5. Android沉浸式状态栏(包含 小米、魅族)
  6. Android Native Browser下载存储路径选择

随机推荐

  1. Android电源管理简介(上)
  2. Dagger2的理解和使用
  3. Android基于XMPP Smack openfire 开发的
  4. android:configChanges=”locale”
  5. 80、Android搭建RN开发环境
  6. android绘画- View onDraw 一点疑惑
  7. Android里监视数据库的变化 registerCont
  8. appwidget中使按钮不能用 以及 appwidget
  9. FS_S5PC100平台上Android Camera架构分析
  10. android:第二个anroid项目 电话拨号器