12

アプリケーションから通話履歴を削除/削除する方法。私はこのようにやっています

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

それは機能しません。

4

6 に答える 6

19

で次の権限があることを確認してください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);  
}
于 2012-06-08T11:20:17.293 に答える
12

既存のソリューションでは、プレフィックスが0または+の番号は削除されません。これがすべての電話番号で機能するためには、次のように番号を一重引用符で囲む必要があります。

String queryString = "NUMBER='"+numberToDelete+"'";
context.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null);

お役に立てれば。

于 2012-12-26T10:14:04.370 に答える
9

受け入れられた応答は、特定の番号の通話履歴からすべての通話を削除します。単一の呼び出しのみを削除する場合は、その関数に CallLogId を渡してこのクエリを実行することで実行できます。

public void DeleteCallById(String idd) {   
    this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,CallLog.Calls._ID + " = ? ",
            new String[] { String.valueOf(idd) });
    }  
于 2014-08-12T12:42:17.727 に答える
3

たとえば、データベースに保存されている数値が「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"/>
于 2015-06-12T08:27:17.150 に答える