2010-04-29 2 views
5

Je suis en train de faire une application VoIP et je voulais savoir s'il est possible de faire ce qui suit avec le fournisseur de contenu des journaux d'appels -Comment ajouter de nouveaux champs et enregistrements à la base de données des journaux d'appels (historique des appels)?

  1. Je veux ajouter de nouveaux enregistrements de journal d'appels pour l'appel VoIP le long avec les journaux d'appels pour l'appel régulier. Comment puis-je ajouter de nouveaux enregistrements au fournisseur de contenu des journaux d'appels existant?

  2. Je souhaite ajouter des champs personnalisés dans les journaux d'appels, tels qu'un ID de session et un champ d'adresse SIP (nom @ domaine). Comment puis-je personnaliser la base de données des journaux d'appels?

Ce sera génial si quelqu'un peut me donner un exemple.

Répondre

5

A partir d'une application SDK standard, vous ne pouvez pas étendre ou modifier directement la base de données CallLog ou le fournisseur de contenu. Pour une application VoIP basée sur SDK, vous devez gérer votre propre journal d'appels.

Si vous écrivez votre propre firmware pour votre propre appareil, je suis sûr que vous pouvez modifier la base de données du journal des appels.

+0

Si ce que vous dites est vrai, quelle est votre réponse à la réponse de Roberto ci-dessous? Y at-il une raison pour laquelle cela ne devrait pas fonctionner ou ne devrait pas être utilisé? –

+0

@Eric: Cette réponse est pour ajouter des appels au journal. Je m'adressais à la balle n ° 2; Roberto a adressé la balle # 1. Mes excuses pour toute confusion. – CommonsWare

8

En ce qui concerne la première question, vous pouvez utiliser ce code pour ajouter de nouveaux enregistrements au fournisseur de contenu existant des journaux d'appels:

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 tiré de Google Voice Callback for Android)

Souvenez-vous d'ajouter les autorisations dans le Manifeste

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

En ce qui concerne la personnalisation de la base de données des journaux d'appels, je ne pense pas que ce soit possible.

Questions connexes