可以自己编写代码实现一个,核心代码:
/** * 插入一条通话记录 * @param number 通话号码 * @param duration 通话时长(响铃时长)以秒为单位 1分30秒则输入90 * @param type 通话类型 1呼入 2呼出 3未接 * @param isNew 是否已查看 0已看1未看 */ private void insertCallLog(String number, String duration, String type, String isNew) { //在通讯录查询是否存在该联系人,若存在则把名字信息也插入到通话记录中 String name = ""; String[] cols = {ContactsContract.PhoneLookup.DISPLAY_NAME}; //设置查询条件 String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + "='"+number+"'"; Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, cols, selection, null, null); int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME); if (cursor.getCount()>0){ cursor.moveToFirst(); name = cursor.getString(nameFieldColumnIndex); } cursor.close(); ContentValues values = new ContentValues(); values.put(CallLog.Calls.CACHED_NAME, name); values.put(CallLog.Calls.NUMBER, number); values.put(CallLog.Calls.DATE, System.currentTimeMillis() ); values.put(CallLog.Calls.DURATION, duration); values.put(CallLog.Calls.TYPE, type); values.put(CallLog.Calls.NEW, isNew); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_CALL_LOG}, 1000); } getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); }
使用的时候记得在manifest文件添加权限
网友回复
在哪可以免费白嫖claude 4.5?
如何编写一个chrome插件实现多线程高速下载大文件?
cdn版本的vue在网页中出现typeerror错误无法找到错误代码位置怎么办?
pywebview能否使用webrtc远程控制共享桌面和摄像头?
pywebview6.0如何让窗体接受拖拽文件获取真实的文件路径?
如何在linux系统中同时能安装运行apk的安卓应用?
python有没有离线验证码识别ocr库?
各家的ai图生视频及文生视频的api价格谁最便宜?
openai、gemini、qwen3-vl、Doubao-Seed-1.6在ui截图视觉定位这款哪家更强更准?
如何在linux上创建一个沙箱隔离的目录让python使用?