приложение:
getContentResolver().delete(Provider.CONTENT_URI,Provider._ID + "=" + id, null);
Поставщик:
public static final Uri BASE_URI = Uri.parse("content://" + AUTHORITY + "/")
public static final Uri CONTENT_URI = Uri.withAppendedPath(BASE_URI,
ENTRIES_TABLE_NAME);
public static final String _ID = "_id";
@Override
public int delete(Uri uri, String where, String[] whereArgs) {
database.delete(ENTRIES_TABLE_NAME, where, whereArgs);
return 0;
}
подсказка:
исключить ошибки, если и использовать андроид студии сделать точку останова на
public int delete(..) {
database.delete() <= here breakpoint
}
и посмотреть, если после выполнения в приложении getContentResolver() отладчик будет двигать вас к этой точке останова
- , если он не у не зарегистрированы поставщика правильно
- контента, если и ударит точки останова реализации базы данных .delete является incorect
Если я хочу удалить первый элемент, я бы просто установить идентификатор равным 0?
зависит, если ваш _id является primary_key в таблице
- баз SQlite двигатель имеет механизм, который создает уникальный ROWID для каждой новой строки при вставке.
, если таблица имеет primary_key то, в конечном счете становится псевдонимом для этого ROW_ID
class SQLiteDatabase
/**
* Convenience method for deleting rows in the database.
*
* @param table the table to delete from
* @param whereClause the optional WHERE clause to apply when deleting.
* Passing null will delete all rows.
* @param whereArgs You may include ?s in the where clause, which
* will be replaced by the values from whereArgs. The values
* will be bound as Strings.
* @return the number of rows affected if a whereClause is passed in, 0
* otherwise. To remove all rows and get a count pass "1" as the
* whereClause.
*/
public int delete(String table, String whereClause, String[] whereArgs) {}
так па ид, как ИНТ и нужно:
database.delete(TABLE_NAME, KEY_ID + " = ?",new String[]{Long.toString(id)});
или просто:
String[] whereArgs = new String[] {String.valueOf(rowId)};
Внимание: ROWIDs будет изменение когда дб пылесосят
Поэтому, пожалуйста, будьте особенно осторожны при определении таблицы и нужно ссылаться на записи с помощью ROWID'ы тех.
Из официальной документации:
«ROWIDs может измениться в любое время и без предварительного уведомления. Если вам нужно зависеть от вашего rowid, сделайте его INTEGER PRIMARY KEY, тогда он не будет меняться ».
- добавить также AUTOINCREMENT, так что вы уверены, что тот же ROWID (s) не используется повторно, когда строки удаляются.
В одном из моих таблиц 
Я получил ключ MESSAGE_ID и она начинает с значение = 1
- Если и не уверены в использовании Key Value на Android устройстве SQLIte Debugger очень отличное приложение
Если я хочу удалить ель st, я бы просто установил id на 0? – user3293643
@ user3293643 u вам нужно посмотреть, что такое первичный ключ таблицы yr, см. Мое обновление – ceph3us