由于一些评论,简而言之问题是:
小部件如何访问自己的sqlite数据库?
为什么使用普通的DatabaseAdapter类无法工作?
是否需要特定的权限?
在没有ContentProvider的情况下,Remotevie/AppWidgetProvider访问自己的数据库是否有限制?
问题似乎很简单,但如果有人真的想知道我为什么会问这个问题,接下来会提供详细信息:
我有以下设置:
1.我有一个正常的Android应用程序,在资产文件夹中有相当多的HTML页面。由于应用程序的大小,首选安装位置是外部SD卡。这很好用。
2.这意味着应用程序不能包含小部件,因为小部件需要驻留在内部ROM中。
3.相反,小部件将从外部SD卡上的应用程序数据库中读取。这是通过ContentProvider/ContentProviderClient实现的。
到目前为止都很好用。
现在,该小部件需要保持一些持久的配置设置,以每个实例为基础。因此,AppWidgetProvider类不能使用首选项,因为它们将适用于每个类。
因此,为了保持(相当复杂的)实例特定配置数据,我希望AppWidgetProvider类拥有自己的小型sqllite数据库。
现在,虽然我可以通过contentprovider从小部件访问应用程序的数据库,但似乎小部件无法访问自己的数据库。我在小部件项目中有一个数据库适配器类;在AppWidgetProvider内部,我有上下文,但是似乎没有写入发生。
数据库适配器的调用已经通过了(我做了一些日志记录),但是当我检查表时,没有写入发生。
为什么会这样?我真的需要ContentProvider内部的小部件才能访问小部件的数据库吗?我不想走这条路,因为当我从小部件实现对应用程序数据库的访问时,我必须通过ContentProviderClient而不是ContentProvider。那将非常麻烦。因为我需要比CRUD更多的访问权限,所以显然需要创建一个自定义ContentProviderClient。Android文档明确指出:“如果使用完全在您自己的应用程序中,则不需要提供程序来使用SQLite数据库。”因此,在我看来,小部件可以直接访问其自己的数据库?我需要特殊权限吗?我怀疑,因为小部件作为RemoteViews在主屏幕进程中运行,所以对数据库的访问受到某种限制?
对此有什么想法、想法或提示吗?
小部件如何访问自己的sqlite数据库?
为什么使用普通的DatabaseAdapter类无法工作?
是否需要特定的权限?
在没有ContentProvider的情况下,Remotevie/AppWidgetProvider访问自己的数据库是否有限制?
问题似乎很简单,但如果有人真的想知道我为什么会问这个问题,接下来会提供详细信息:
我有以下设置:
1.我有一个正常的Android应用程序,在资产文件夹中有相当多的HTML页面。由于应用程序的大小,首选安装位置是外部SD卡。这很好用。
2.这意味着应用程序不能包含小部件,因为小部件需要驻留在内部ROM中。
3.相反,小部件将从外部SD卡上的应用程序数据库中读取。这是通过ContentProvider/ContentProviderClient实现的。
到目前为止都很好用。
现在,该小部件需要保持一些持久的配置设置,以每个实例为基础。因此,AppWidgetProvider类不能使用首选项,因为它们将适用于每个类。
因此,为了保持(相当复杂的)实例特定配置数据,我希望AppWidgetProvider类拥有自己的小型sqllite数据库。
现在,虽然我可以通过contentprovider从小部件访问应用程序的数据库,但似乎小部件无法访问自己的数据库。我在小部件项目中有一个数据库适配器类;在AppWidgetProvider内部,我有上下文,但是似乎没有写入发生。
数据库适配器的调用已经通过了(我做了一些日志记录),但是当我检查表时,没有写入发生。
为什么会这样?我真的需要ContentProvider内部的小部件才能访问小部件的数据库吗?我不想走这条路,因为当我从小部件实现对应用程序数据库的访问时,我必须通过ContentProviderClient而不是ContentProvider。那将非常麻烦。因为我需要比CRUD更多的访问权限,所以显然需要创建一个自定义ContentProviderClient。Android文档明确指出:“如果使用完全在您自己的应用程序中,则不需要提供程序来使用SQLite数据库。”因此,在我看来,小部件可以直接访问其自己的数据库?我需要特殊权限吗?我怀疑,因为小部件作为RemoteViews在主屏幕进程中运行,所以对数据库的访问受到某种限制?
对此有什么想法、想法或提示吗?