2010-04-29 19 views
5

Sto cercando di fare un'applicazione VoIP e volevo sapere se è possibile effettuare le seguenti operazioni con il contenuto fornitore dei registri delle chiamate -Come aggiungere nuovi campi e record al database delle chiamate (cronologia chiamate)?

  1. voglio aggiungere nuovi record Registro chiamate per la chiamata VoIP lungo con i registri delle chiamate per la chiamata normale. Come posso aggiungere nuovi record al fornitore di contenuti dei registri delle chiamate esistente?

  2. Desidero aggiungere campi personalizzati ai registri delle chiamate come un ID sessione e il campo indirizzo SIP (nome @ dominio). Come posso personalizzare il database dei registri delle chiamate?

Sarebbe bello se qualcuno potesse darmi un esempio.

risposta

5

Da un'applicazione SDK standard, non è possibile estendere o modificare direttamente il database CallLog o il provider di contenuti. Per un'applicazione VOIP basata su SDK, è necessario mantenere il proprio registro delle chiamate.

Se si sta scrivendo il proprio firmware per il proprio dispositivo, sono sicuro che ci sono modi per modificare il database del registro chiamate.

+0

Se quello che dici è vero, qual è la tua risposta alla risposta di Roberto in basso? C'è qualche ragione per cui non dovrebbe funzionare o non dovrebbe essere usato? –

+0

@Eric: la risposta è per l'aggiunta di chiamate al registro. Stavo affrontando il punto 2; Roberto si è rivolto al proiettile n. 1. Le mie scuse per qualsiasi confusione. – CommonsWare

8

Per quanto riguarda la prima domanda, è possibile utilizzare questo codice per aggiungere nuovi record per il fornitore di contenuti Registri chiamate esistente:

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); 
} 

(codice preso da Google Voice Callback for Android)

Ricordate di aggiungere le autorizzazioni nel Manifest

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

Per quanto riguarda la personalizzazione del database dei registri delle chiamate, non penso sia possibile.

Problemi correlati