我正在尝试制作VoIP应用程序,我想知道是否可以使用“呼叫日志”内容提供商执行以下操作 -
我想为VoIP通话添加新的通话记录记录以及常规通话的通话记录。如何将新记录添加到现有的呼叫日志内容提供商?
我想将自定义字段添加到呼叫日志中,例如会话ID和SIP地址(名称@域)字段。如何自定义通话记录数据库?
如果有人可以举个例子,那就太好了。
答案 0 :(得分:10)
关于第一个问题,您可以使用此代码将新记录添加到现有的呼叫日志内容提供商:
public static void insertPlaceholderCall(ContentResolver contentResolver, String number){
ContentValues values = new ContentValues();
values.put(CallLog.Calls.NUMBER, number);
values.put(CallLog.Calls.DATE, System.currentTimeMillis());
values.put(CallLog.Calls.DURATION, 0);
values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE);
values.put(CallLog.Calls.NEW, 1);
values.put(CallLog.Calls.CACHED_NAME, "");
values.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0);
values.put(CallLog.Calls.CACHED_NUMBER_LABEL, "");
Log.d(TAG, "Inserting call log placeholder for " + number);
contentResolver.insert(CallLog.Calls.CONTENT_URI, values);
}
(代码取自Google Voice Callback for Android)
请记住在Manifest中添加权限
<uses-permission
android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission
android:name="android.permission.WRITE_CONTACTS"></uses-permission>
关于调用日志数据库的自定义,我认为不可能。
答案 1 :(得分:6)
从标准SDK应用程序中,您无法直接扩展或修改CallLog
数据库或内容提供程序。对于基于SDK的VOIP应用程序,您应该维护自己的呼叫日志。
如果您为自己的设备编写自己的固件,我相信您可以通过多种方式修改通话记录数据库。