我正在尝试删除调用日志,例如+911111,但它无效。以下代码正在处理11111类型编号,但它不适用于+911111这样的数字。它只删除11111型号。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String number = "11111";
String queryString="NUMBER="+number;
int del = this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,null);
if(del == 1)
Log.d("Delete", "Delete Number" + queryString);
else
Log.d("Not Delete", "Not Delete" + queryString);
}
答案 0 :(得分:1)
只需在数字周围加上单引号。用以下代码替换queryString:
String queryString = "NUMBER LIKE '" + number + "'";
像:
String number = "+911111";
getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,
null)
答案 1 :(得分:0)
它不会删除像+911111这样的数字,因为你的queryString说“=”
尝试将其更改为
String queryString="NUMBER LIKE "+number;
希望这会对你有所帮助。
答案 2 :(得分:0)
在构建查询时,您应该使用SDK提供的合同类(在您的情况下使用CallLog.Calls)。
合同类用于将对象模型映射到数据库中的相应数据名称。当android团队需要更新数据库中的列名时,他们也会更新合同类,然后开发人员不需要进行任何更改。
然后尝试将查询字符串更改为:
String queryString = CallLog.Calls.NUMBER + "='" + strNumber + "'";
注意:单引号是必要的。
还要确保该号码与数据库号码完全匹配
( +33678541236 != 0678541236 )
为确保删除正确的行,您可以执行以下操作:
Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + " = ? ", strNumber , "");
int idOfRowToDelete = cursor.getInt(cursor.getColumnIndex(CallLog.Calls._ID));
getContentResolver().delete(Uri.withAppendedPath(CallLog.Calls.CONTENT_URI, String.valueOf(idOfRowToDelete)), "", null);