2012-06-08 13 views
8

cómo eliminar/eliminar el registro de llamadas de la aplicación. Estoy haciendo esto¿Cómo eliminar registros de llamadas de Android programáticamente?

this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,null,null); 

it not working.

+0

asegúrese de u tiene ' 'permiso en el hombre ifest –

+0

¿cuál error obtienes? por favor, publique su logcat. –

+0

@imrankhan está funcionando pero quiero eliminar un número particular de los registros de llamadas. – sai

Respuesta

15

asegúrese u han siguiente permiso en manifast.xml:

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

para eliminar Calllogs para tratar número particular de esta manera:

public void DeleteCallLogByNumber(String number) { 
    String queryString = "NUMBER=" + number; 
    this.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); 
} 
+6

¿No te refieres a ' '? :) – keybee

+0

Esto no funciona para mí. –

4

La solución existente no va a borrar los números con 0 o + prefijo. Para que esto funcione con todos los números de teléfono, se necesita poner el número entre comillas simples, como el siguiente: String queryString = "NUMBER = '" + deleteNumber + "'"; Espero que esto ayude.

+0

Si tiene alguna pregunta, por favor publique una nueva pregunta. –

+0

Esta solución funcionó como magia :) –

2
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/> 

You need to give only this permission to work along with this method 

this.getContentResolver().delete(CallLog.Calls.CONTENT_URI, null, null); 

Its working perfectly for me. I've tested it on my Moto-G running 
Kitkat 4.4.2 and Samsung Note with Jelly Bean 4.1. 
+1

Esto también funciona en Marshmallow. Acabo de agregar este comentario si alguien tropieza con esta respuesta. –

5

respuesta aceptada, se eliminarán todas las llamadas del registro de llamadas para un número específico. Si desea eliminar una sola llamada, puede hacerlo pasando CallLogId a esa función y ejecutar esta consulta.

public void DeleteCallById(String idd) { 
    this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,CallLog.Calls._ID + " = ? ", 
      new String[] { String.valueOf(idd) }); 
    } 
+0

sí, es una buena solución – Achin

+0

Gracias. Su respuesta fue muy útil, simple y proporciona información sobre el tema – JamisonMan111

2

Aquí es una forma mejorada, por ejemplo, si el número almacenado en la base de datos es como: "914111222" este método puede tratar con números como: "+ 98 914 111 2222":

public void removeContactsLogFromPhoneLogs(String numberTag){ 
    char[] number=numberTag.toCharArray(); 
    String n="%"; 
    for(int i=0;i<number.length;i++) 
    { 
     n=n+(number[i]+"%"); 
    } 
    String queryString=CallLog.Calls.NUMBER+" LIKE '"+n+"'"; 
    mContext.getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,null); 

} 

se requiere el permiso como:

<uses-permission android:name="android.permission.WRITE_CALL_LOG"/> 
+0

Súper útil gracias – JamisonMan111

Cuestiones relacionadas