gpt4 book ai didi

android - 如何在 ContentProvider 中使用 URI

转载 作者:行者123 更新时间:2023-11-30 02:57:16 25 4
gpt4 key购买 nike

我没有在 Android 的内容提供者中得到 uris 的概念。我的数据库由三个表组成。我从来没有真正查询过一个表,而是需要使用关节来获取想要的数据。现在我的表是 A、B、C。

private static final String AUTHORITY = "com.example.database.contentprovider";

// uri for each table
public static final Uri CONTENT_URI_A = Uri.parse("content://" + AUTHORITY + "/" + A.TABLE_NAME);
public static final Uri CONTENT_URI_B = Uri.parse("content://" + AUTHORITY + "/" + B.TABLE_NAME);
public static final Uri CONTENT_URI_C = Uri.parse("content://" + AUTHORITY + "/" + C.TABLE_NAME);
  1. 为什么我需要 AUTHORITY Uri?
  2. 是否需要每个表或每个可能的查询的 URI?正如我所说,我不需要只查询一个表,因此没有理由需要 CONTENT_URI_A、CONTENT_URI_B 和 CONTENT_URI_C。
  3. 我是否假设正确,我需要 URI 来识别将要进行的查询类型?

最佳答案

内容 URI 只是与特定查询关联的唯一字符串 uri - 它们不需要与您的基础表结构相关。

URI 的 "content://"+ AUTHORITY + "/" 部分尝试通过使用您的应用程序独有的权限。

它们有两个主要目的:

  • 允许您的queryupdateinsertdelete 调用轻松区分不同的查询(的当然,您可以使用 selectionprojection 或其他参数来执行此操作,但通常使用 UriMatcher 更容易快速解析 URI )<
  • 允许您调用 Cursor.setNotificationUri在返回的 Cursor 上,它将在 ContentResolver.notifyChange(uri, null) 时自动重新查询数据被调用(即,在您的插入/更新/删除调用中)。这在使用 Loader Framework 时特别有用和一个 CursorLoader在基础数据发生变化时自动接收回调。

关于android - 如何在 ContentProvider 中使用 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23069120/

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