アプリケーションから通話履歴を削除/削除する方法。私はこのようにやっています
this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,null,null);
それは機能しません。
で次の権限があることを確認してくださいManifest.xml
。
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
特定の番号の通話履歴を削除するには、次の方法を試してください。
public void DeleteCallLogByNumber(String number) {
String queryString = "NUMBER=" + number;
this.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null);
}
既存のソリューションでは、プレフィックスが0または+の番号は削除されません。これがすべての電話番号で機能するためには、次のように番号を一重引用符で囲む必要があります。
String queryString = "NUMBER='"+numberToDelete+"'";
context.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null);
お役に立てれば。
受け入れられた応答は、特定の番号の通話履歴からすべての通話を削除します。単一の呼び出しのみを削除する場合は、その関数に CallLogId を渡してこのクエリを実行することで実行できます。
public void DeleteCallById(String idd) {
this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,CallLog.Calls._ID + " = ? ",
new String[] { String.valueOf(idd) });
}
たとえば、データベースに保存されている数値が「914111222」の場合、このメソッドは「+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);
}
次のような許可が必要です。
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>