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? P>
4 Réponses :
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 ? p>
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. P>
J'espère que cela vous aidera. Acclamations p>
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 "); } }
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: 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.
}
}
}
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?
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) code>, enregistrez un
contentobserver code> pour
calllog.calls.Content_uri code> et appelez la méthode suivante dans < Code> Onchange Code>. Mais juste avant d'appeler que vous assurez de désenregistrer ce
contentobserver code>
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 () code> peut supprimer plusieurs enregistrements, je me trompe?
getcontentresolver (). Supprimer (calllog.calls.content_uri, calllog.calls.number + "=?", nouvelle chaîne [] {phonenumber}); code> devrait faire bien
Veuillez choisir votre réponse.