如何将新字段和记录添加到呼叫日志(呼叫历史记录)数据库中?

时间:2010-04-29 15:04:44

标签: android

我正在尝试制作VoIP应用程序,我想知道是否可以使用“呼叫日志”内容提供商执行以下操作 -

  1. 我想为VoIP通话添加新的通话记录记录以及常规通话的通话记录。如何将新记录添加到现有的呼叫日志内容提供商?

  2. 我想将自定义字段添加到呼叫日志中,例如会话ID和SIP地址(名称@域)字段。如何自定义通话记录数据库?

  3. 如果有人可以举个例子,那就太好了。

2 个答案:

答案 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应用程序,您应该维护自己的呼叫日志。

如果您为自己的设备编写自己的固件,我相信您可以通过多种方式修改通话记录数据库。