我使用以下代码从CallLog.Calls提供程序中删除Call:
String strNumber= "myPhoneNumber"
String queryString= "NUMBER='" + strNumber + "'";
Log.v("Number", queryString);
int i=context.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null);
if(i<1)
{
// do my stuff
} 这段代码可以在Android2.2上运行,但不能在Android2.3.3上运行
LogCat中没有错误.
发布于 2012-06-04 21:48:45
在构建查询时,应该使用SDK提供的contract类(在您的情况下是CallLog.Calls )。
契约类用于将对象模型映射到数据库中相应的数据名称。当android团队需要更新数据库中的列名时,他们也会更新contract类,然后不需要对developpers进行任何更改。
然后尝试将查询字符串更改为:
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);(没有尝试,但应该可以进行小的修改)
发布于 2012-11-20 19:57:49
private void deleteNumber() {
try {
String strNumberOne[] = { "00577698160" };
Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + " = ? ", strNumberOne, "");
boolean bol = cursor.moveToFirst();
if (bol) {
do {
int idOfRowToDelete = cursor.getInt(cursor.getColumnIndex(CallLog.Calls._ID));
getContentResolver().delete(Uri.withAppendedPath(CallLog.Calls.CONTENT_URI, String.valueOf(idOfRowToDelete)), "", null);
} while (cursor.moveToNext());
}
} catch (Exception ex) {
System.out.print("Exception here ");
}
}https://stackoverflow.com/questions/10882402
复制相似问题