我正在使用以下内容从通话记录中删除号码。该方法工作正常,但对于那些包含()和 - 的数字不正常。
public void deleteNumber(Context context, String mobile_number) {
String Calls = "content://call_log/calls";
Uri UriCalls = Uri.parse(Calls);
Cursor cur = context.getContentResolver().query(UriCalls, null, null, null, null);
Toast.makeText(context, "The number to be deleted is: " + mobile_number, Toast.LENGTH_LONG).show();
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String query = "NUMBER='" + mobile_number + "'";
int i = context.getContentResolver().delete(UriCalls, query, null);
if (i > 0) {
Toast.makeText(context, "The number " + mobile_number + " is deleted.", Toast.LENGTH_LONG).show();
break;
}
}
}
cur.close();
}
不会删除以此格式保存的数字。请帮我解决这个问题。
编辑:
以下是诀窍:
mobile_number = mobile_number.replaceAll("[^0-9]","");
我正在使用一种返回手机号码的方法。这个数字包含所有字符,包括(),空格等。需要过滤。
答案 0 :(得分:0)
替换:
String query = "NUMBER='" + mobile_number + "'";
int i = context.getContentResolver().delete(UriCalls, query, null);
使用:
String query = "NUMBER=?";
String[] args={ mobile_number };
int i = context.getContentResolver().delete(UriCalls, query, args);
看看你是否有更好的运气。 (
和)
可能是保留字符,需要进行转义。使用查询参数可以解决这个问题。