2010-04-29 69 views
5

我試圖進行VoIP應用程序,我想知道是否有可能做的通話記錄內容提供商如下 -如何向通話記錄(通話記錄)數據庫添加新的字段和記錄?

  1. 我要爲VoIP呼叫一起添加新的呼叫記錄與常規通話的通話記錄。如何將新記錄添加到現有的通話記錄內容提供商?

  2. 我想將自定義字段添加到呼叫日誌中,如會話ID和SIP地址(名稱@域)字段。我如何定製通話記錄數據庫?

如果有人能給我一個例子,那將會很棒。

回答

5

從標準SDK應用程序中,您不能直接擴展或修改CallLog數據庫或內容提供者。對於基於SDK的VOIP應用程序,您應該維護自己的通話記錄。

如果您正在爲自己的設備編寫自己的固件,我確信您可以修改通話記錄數據庫。

+0

如果你說的是真的,你對下面的羅伯託答案有何迴應?有什麼理由不應該使用或不應該使用? – 2011-10-04 14:43:18

+0

@Eric:該答案用於將呼叫添加到日誌。我正在處理子彈#2;羅伯託解決了子彈#1。我很抱歉有任何混淆。 – CommonsWare 2011-10-04 14:48:07

8

關於第一個問題,您可以使用此代碼來新記錄添加到現有的呼叫日誌,內容提供商:

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採取代號)

記住要添加的權限清單

<uses-permission 
    android:name="android.permission.READ_CONTACTS"></uses-permission> 
<uses-permission 
    android:name="android.permission.WRITE_CONTACTS"></uses-permission> 

關於通話記錄數據庫的定製,我認爲是不可能的。