11
votes

Supprimer l'appel du journal des appels après la fin de l'appel

Je suis nouveau au développement Android. Je veux faire un appel à un numéro mais je ne veux pas stocker le numéro dans mon journal d'appels. Comment puis-je supprimer le numéro du journal des appels après la fin de l'appel?


1 commentaires

Veuillez choisir votre réponse.


4 Réponses :


5
votes

Vous devez d'abord configurer un récepteur de diffusion pour détecter l'état du téléphone. Voici la même question: Stackoverflow - Intention d'être tiré lorsqu'un appel se termine ?

Et maintenant pour supprimer la saisie du journal des appels, voici le premier lien sur Google: Suppression du journal dans Android
Dans l'exemple, il supprime toute entrée d'appel pour un numéro spécifique, mais vous pouvez modifier la requête pour supprimer l'entrée d'un identifiant de journal d'appel spécifique.

J'espère que cela vous aidera. Acclamations


0 commentaires

2
votes

J'essaie juste cette méthode, c'est très bien sur mon HTC avec 4.0.3

private void deleteNumber() {
            try {
                String strNumberOne[] = { "00577698160" };
                Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + " = ? ", strNumberOne, "");
                boolean bol = cursor.moveToFirst();
                if (bol) {
                    do {
                        int idOfRowToDelete = cursor.getInt(cursor.getColumnIndex(CallLog.Calls._ID));
                        getContentResolver().delete(Uri.withAppendedPath(CallLog.Calls.CONTENT_URI, String.valueOf(idOfRowToDelete)), "", null);
                    } while (cursor.moveToNext());
                }
            } catch (Exception ex) {
                System.out.print("Exception here ");
            }
        }


0 commentaires

5
votes

IM en utilisant 4.2.2 Quoi qu'il en soit, j'ai dû modifier le code de l'Aftab car il ne fonctionnait pas pour moi. Cela pourrait être un problème d'asychère donnant ce que j'essayais de faire est de mettre à jour le journal des appels juste après la fin d'un appel entrant. Je pense que je dois donner suffisamment de temps à mettre à jour le tableau avant de supprimer l'entrée ou qu'il existe exister: xxx pré>

et pour appeler la fonction que je cours sur un autre fil (puisque je dort ): P>

/*handles the registration of our content observer used for monitoring the call log*/
private void RegisterContentObserver(boolean shouldRegister){
    if(shouldRegister)
    {

        context.getContentResolver().registerContentObserver(
                android.provider.CallLog.Calls.CONTENT_URI,
                true,
                mContentObserver);

    }
else {

    try {  
        context.getContentResolver().unregisterContentObserver(mContentObserver);  
    } catch (IllegalStateException ise) {  
        // Do Nothing.  Observer has already been unregistered.  
    }  

}
    }


2 commentaires

sa ne fonctionne pas, aucune idée? Il appelle la fonction Supprimer, le BOOL est vrai, mais le nombre est dans l'historique du journal tel qu'il est


Avez-vous mis en place un contentobserver? Obtenez-vous un événement qui vous est envoyé lorsque le journal des appels change?



2
votes

Version modifiée des répondeurs antérieurs. Vous n'avez pas vraiment besoin d'une boucle de temps. De plus, vous n'avez pas besoin thread.sleep (4000) , enregistrez un contentobserver pour calllog.calls.Content_uri et appelez la méthode suivante dans < Code> Onchange . Mais juste avant d'appeler que vous assurez de désenregistrer ce contentobserver xxx


2 commentaires

Excellente idée concernant le contenu Observer, je vais essayer de vous uppoter et de mettre à jour mon commentaire aussi pour aider les autres.


Pourquoi avez-vous besoin d'un curseur pour boucle? contesteResolver.delete () peut supprimer plusieurs enregistrements, je me trompe? getcontentresolver (). Supprimer (calllog.calls.content_uri, calllog.calls.number + "=?", nouvelle chaîne [] {phonenumber}); devrait faire bien