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

Tus*_*pta 7 android

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

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

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

如果有人可以给我一个例子,那就太棒了.

Rob*_*rdi 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);
}
Run Code Online (Sandbox Code Playgroud)

(代码来自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>
Run Code Online (Sandbox Code Playgroud)

关于调用日志数据库的自定义,我认为不可能.


Com*_*are 6

从标准SDK应用程序,您无法直接扩展或修改CallLog数据库或内容提供程序.对于基于SDK的VOIP应用程序,您应该维护自己的呼叫日志.

如果您正在为自己的设备编写自己的固件,我相信您可以通过多种方法修改呼叫日志数据库.