Android 内容 uri id 作为字符串

Android content uri id as string

在我的 Android 应用程序中,我将 SQLite 与内容提供程序一起使用。由于某些(后端)原因,我的表将 _id 主键作为 VARCHAR。

问题是:

我需要使用附加了 id 的内容 uri。在所有示例中,我看到带有 id 的内容 uri 看起来是

content://<autority>/<model_or_table>/<long_id>

并添加到 UriMatcher 作为

UriMatcher.add(autority, model_or_id + "/#", uri_id)

当然,“/#”匹配 ID 仅适用于数字。

我的问题是:

有什么方法可以使用带有附加字符串 ID 的内容 uri?典型的 id 类似于

50c11d774e5e1b99698b6879

典型内容 uri 必须为

content://com.my.app.autority/Users/50c11d774e5e1b99698b6879

以及如何使用这样的 uri 和 UriMatcher?

我知道我可以编写选择指令 (WHERE _id = "50c11d774e5e1b99698b6879") 来查询方法,但我需要确切的 URI 或将唯一字符串 ID 投影到 SQLiteDB 中唯一长值的方法。

有什么办法吗?提前致谢)抱歉英语不好)

请参阅有关创建找到的内容提供程序的文档 here。具体请参考标题Content URI patterns。正如您正确指出的那样, # 是一个通配符,它​​将匹配具有整数 ID 的单行。 * 通配符不会匹配具有 non-numeric 个 ID 的单行。

据我所知,UriMatcher class 在这种情况下无法帮助您。

另请参阅 UriMatcher 参考页 here