Android 从返回的Uri获取插入数据库的新记录的ID

Android 从返回的Uri获取插入数据库的新记录的ID,android,android-sqlite,Android,Android Sqlite,当您像这样将新项插入数据库时 Uri uri = getContentResolver().insert(Tournaments.CONTENT_URI, values); 有没有办法从返回的uri中获取id,这样我就不必运行查询来获取id,因为它已经在返回的uri中了?将最后一个路径段转换为长路径段。使用ContentUris.parseId(uri) long id = Long.valueOf(uri.getLastPathSegment()); 此语句将最后一个路径段转换为长路径段

当您像这样将新项插入数据库时

Uri uri = getContentResolver().insert(Tournaments.CONTENT_URI, values); 
有没有办法从返回的uri中获取id,这样我就不必运行查询来获取id,因为它已经在返回的uri中了?

将最后一个路径段转换为长路径段。

使用ContentUris.parseId(uri)
long id = Long.valueOf(uri.getLastPathSegment());
此语句将最后一个路径段转换为长路径段

long id = Long.valueOf(uri.getLastPathSegment());
阅读中的文档

以上是正确的。但我所做的是,我像Events.CONTENT\u uri.getLastPathSegment()一样传递uri,它不提供id。因为我们必须传递由insert()返回的uri,如下所示。可能对像我这样的人有帮助

Uri uri = getContentResolver().insert(Events.CONTENT_URI, values); 
long rowId = Long.valueOf(uri.getLastPathSegment());
parseId()是Google关于如何检索记录ID的“官方”答案,请参见本节末尾。您也可以使用uri.getLastPathSegment()获取字符串值,但需要使用Long.valueOf(stringId)而不是Integer.valueOf(stringId),因为数据库ID具有长值。uri.getPathSegments()是否也提供相同的值