android向系统插入一条通话记录

android向系统插⼊⼀条通话记录
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。 blog.csdn/m940034240/article/details/77237301
/**
* 插⼊⼀条通话记录
* @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) {
ContentValues values = new ContentValues();
values.put(CallLog.Calls.NUMBER, number);
e通话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) {            questPermissions(this,
new String[]{Manifest.permission.WRITE_CALL_LOG}, 1000);
}
getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
}
使⽤的时候记得在manifest⽂件添加权限
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
以上⽅法只能插⼊号码,就算通讯录存在联系⼈,查询的时候也不会获得其名字,如果要同时插⼊联系⼈名字,使⽤以下⽅法
/**
* 插⼊⼀条通话记录
* @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 = ColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
if (Count()>0){
name = String(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) {            questPermissions(this,
new String[]{Manifest.permission.WRITE_CALL_LOG}, 1000);
}
getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
}
使⽤的时候记得在manifest⽂件添加权限
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

本文发布于:2024-09-21 22:52:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/367551.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:存在   查询   联系   通话   博主   号码   通讯录   是否
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议