gpt4 book ai didi

android - 内容提供者和sqlite数据库,uri语法

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:40 25 4
gpt4 key购买 nike

这几天我一直在尝试通过内容提供商访问数据库,但没有成功。

我想我不明白用于指向数据库的Uri 的语法。可能我没有正确理解 Android 开发者文档中关于 Uri 格式的内容。

我有一个名称为“testdatabase.db”的数据库、名称为“table1”的表和一个名为 DbProvider 的类,它是 ContentProvider 的子类。数据库已成功创建,我可以使用 adb shell 对其进行查询,但是当我尝试从客户端进行查询时,我得到了 IllegalArgumentException Unknown uri: content://com.test.dbprovider/testdatabase.db

有人可以解释一下在我的情况下 Uri 的正确格式是什么吗?提供者的权限部分的语法是什么?是否可以将权限命名为例如 com.test.foo 并且它应该仍然有效,或者点后的最后一部分是否应该是类名或类似名称?

我还为 AndroidManifest.xml 文件制作了必要的提供者标签。

最佳答案

您遇到异常是因为您的内容提供者不知道您指定的 uri。由于您没有显示您的代码,所以我不能说出什么是错误的。检查内容提供程序中的 UriMatcher 实例(您正在使用 UriMatcher,对吗?如果没有检查 docs。)

我猜你对内容提供者中的 uri 没有什么误解。通常,您不会在 uri 中使用甚至公开数据库名称(但如果您愿意,也可以这样做)。 uri 应该是数据库中记录的路径。在您的示例中,您可以使用类似 content://com.text.dbprovider/table1 的内容。权限应该是内容提供者的全限定类名。更多关于内容提供商的 uris here .

我建议您查看 NotePad content provider implementation在样本中。

关于android - 内容提供者和sqlite数据库,uri语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com