gpt4 book ai didi

android - 如何从小部件应用程序访问 sql 数据库

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:13 25 4
gpt4 key购买 nike

由于一些评论,问题简述:

小部件如何访问它自己的 sqlite 数据库?

为什么它不适用于普通的 DatabaseAdapter 类?

是否需要某些权限?

是否有限制 Remotevie/AppWidgetProvider 访问其自己的数据库(没有 ContentProvider)


这个问题看似简单,但细节如下,如果有人真的想知道我为什么问:

我有以下设置:

  1. 我有一个普通的 android 应用程序,它的 assets 文件夹中有很多 HTML 页面。由于应用程序的大小,首选安装位置是外部 SD 卡。这很好用。

  2. 这意味着应用不能包含小部件,因为小部件需要驻留在内部 ROM 中。

  3. 相反,小部件将从外部 SD 卡上的应用程序数据库读取。这是通过 ContentProvider/ContentProviderClient 实现的。

目前一切正常。

现在,该小部件需要在每个实例的基础上维护一些持久的配置设置。因此,AppWidgetProvider 类不能使用首选项,因为它们会在每个类的基础上应用。

因此,为了保留(相当复杂的)特定于实例的配置数据,我希望 AppWidgetProvider 类拥有自己的小型 sqllite 数据库。

现在,虽然我可以通过 contentprovider 从小部件访问应用程序的数据库,但小部件似乎无法访问它自己的数据库。我在小部件项目中有一个数据库适配器类;在 AppWidgetProvider 中,我有上下文,但似乎没有写入。

对数据库适配器的调用正常(我已经完成了一些日志记录),但是当我检查表时,没有发生写入。

这是为什么呢?我真的需要小部件内的 ContentProvider 来访问小部件的数据库吗?我不想走那条路,因为当我从小部件实现对应用程序数据库的访问时,我必须通过 ContentProviderClient 而不是 ContentProvider。那会很麻烦。因为我需要的不仅仅是 CRUD 访问,所以这显然涉及创建自定义 ContentProviderClient。 android 文档明确指出“如果使用完全在您自己的应用程序中,您不需要提供程序来使用 SQLite 数据库。”那么恕我直言,这是否意味着小部件可以直接访问其数据库?我需要特殊权限吗?我怀疑,因为小部件在主屏幕进程中作为 RemoteViews 运行,所以对数据库的访问受到某种限制?对此有什么想法、想法和提示吗?

最佳答案

如果没有其他方法对您有用,我建议使用服务。为应用程序小部件提供服务是很常见的事情。

关于android - 如何从小部件应用程序访问 sql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789236/

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