android 向系统插入一条通话记录
2017-08-16 11:50
441 查看
/** * 插入一条通话记录 * @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); 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文件添加权限
<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 = 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文件添加权限
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
相关文章推荐
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- [android] 插入一条记录到系统短信应用里
- android 通话记录插入 短信插入 联系人插入
- Android之插入通话记录,短信箱插入短信,号码薄插入联系人
- Android之插入通话记录,短信箱插入短信,号码薄插入联系人
- Android之插入通话记录,短信箱插入短信,号码薄插入联系人
- android跳转到系统的收件箱,系统通话记录
- Android之通话记录的查询、删除与插入(1)
- 通过sql语句向oracle数据库中插入一条记录(含有主键),系统当前时间插入表中 ,空值插入表中
- android各种界面跳转(调用系统联系人,通话记录,发短信,发邮件,google搜索)
- Android修改通话记录,短信箱插入短信,号码薄
- 插入一条记录到系统短信应用
- Android调用系统通话记录
- 一条insert语句批量插入多条记录
- php CI框架插入一条或多条sql记录示例
- 向数据库中插入一条记录后如何获得自动生成的列值?
- Android实战—实现自动读取通讯录和通话记录切换,ViewPage滑屏效果,可拨打电话
- Android通话记录ListView实现左滑发短信和右滑打电话
- 调用android系统API结束通话
- Android通讯录管理(获取联系人、通话记录、短信消息)(一)