Reputation: 1410
I am trying to make a VoIP application and I wanted to know if it is possible to do the following with the Call Logs content provider -
I want to add new Call Log records for the VoIP call along with the call logs for the regular call. How can I add new records to the existing Call logs content provider?
I want to add custom fields to the Call Logs like a session ID and SIP address(name@domain) field. How can I customize the call logs database?
It'll be great if someone can give me an example.
Upvotes: 8
Views: 5018
Reputation: 14389
Regarding the first question, you can use this code to add new records to the existing Call logs content provider:
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);
}
(Code taken from Google Voice Callback for Android)
Remember to add the permissions in the Manifest
<uses-permission
android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission
android:name="android.permission.WRITE_CONTACTS"></uses-permission>
Regarding the customization of the call logs database, I do not think is possible.
Upvotes: 10
Reputation: 1006869
From a standard SDK application, you cannot directly extend or modify the CallLog
database or content provider. For an SDK-based VOIP application, you should maintain your own call log.
If you are writing your own firmware for your own device, I am sure there are ways you can modify the call log database.
Upvotes: 6