我在从添加的行中检索 ID 时遇到了一点问题。
我的 ContentProvider
中的 insertWithConflict
返回新添加行的 ID,但我不知道如何将它从我的 ContentProvider
获取到我的 IntentService
负责触发插入。
代码
插入IntentService
Uri uri = Uri.parse(MicroDatabaseProvider.CONTENT_URI + "/" + MicroDatabaseProvider.ORGANIZER_SEARCH_IN);
getContentResolver().insert(uri, cv);
插入ContetnProvider
long idLong = sqlDB.insertWithOnConflict(DbHelperMicro.ORGANIZER_SEARCH_TABLE,
null,
values,
SQLiteDatabase.CONFLICT_IGNORE);
getContext().getContentResolver().notifyChange(Uri.parse(CONTENT_URI + "/" + ORGANIZER_SEARCH_QUE), null);
最佳答案
ContentProvider
中的 insert
函数应该返回一个 Uri
值,如下所示:
public Uri insert(Uri uri, ContentValues values) {
//...
return Uri.parse(base_uri+ "/" + id); //where base uri is the base uri from your table
}
如果就像我向您展示的那样,您可以从该 URI 中检索 ID。
在您的 IntentService
中使用以下代码
Uri result = getContentResolver().insert(uri, cv);
long id = Long.parseLong(uri.getLastPathSegment());
关于android - 如何从 insert() 获取 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802393/