无法从包含()和 -

时间:2015-07-26 11:58:44

标签: android

我正在使用以下内容从通话记录中删除号码。该方法工作正常,但对于那些包含()和 - 的数字不正常。

  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]","");

我正在使用一种返回手机号码的方法。这个数字包含所有字符,包括(),空格等。需要过滤。

enter image description here

1 个答案:

答案 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);

看看你是否有更好的运气。 ()可能是保留字符,需要进行转义。使用查询参数可以解决这个问题。