mrd*_*mrd 6 database android widget
由于一些意见,问题简而言之:
小部件如何访问自己的sqlite数据库?
为什么它不适用于普通的DatabaseAdapter类?
是否需要某些权限?
Remotevie/AppWidgetProvider是否有限制访问自己的数据库(没有ContentProvider)
我有以下设置:
我有一个普通的Android应用程序,它在assets文件夹中有很多HTML页面.由于应用程序的大小,首选的安装位置是外部SD卡.这很好用.
这意味着应用程序不能包含小部件,因为小部件需要驻留在内部ROM中.
相反,小部件将从外部SD卡上的应用程序数据库中读取.这是通过ContentProvider/ContentProviderClient实现的.
到目前为止工作正常.
现在,该小部件需要在每个实例的基础上维护一些持久性配置设置.因此,AppWidgetProvider类不能使用首选项,因为它们将基于每个类应用.
因此,为了保留(非常复杂的)实例 - 特定配置数据,我希望AppWidgetProvider类拥有自己的小sqllite数据库.
现在,虽然我可以通过contentprovider从小部件访问应用程序的数据库,但似乎小部件无法访问自己的数据库.我在widget项目中有一个数据库适配器类; 在AppWidgetProvider中,我有Context,但似乎没有写作.
对数据库适配器的调用通过OK(我已完成一些日志记录),但是当我检查表时,没有发生任何写入.
这是为什么?我是否真的需要窗口小部件中的ContentProvider来访问窗口小部件的数据库?我不想走这条路,因为当我实现从小部件访问apps数据库时,我不得不通过ContentProviderClient而不是ContentProvider.这将非常麻烦.因为我需要比CRUD更多的东西,显然这将涉及创建自定义ContentProviderClient.android文档明确指出"如果使用完全在您自己的应用程序中,您不需要提供程序来使用SQLite数据库." 那么恕我直言,这意味着,小部件可以直接访问其数据库?我需要特殊权限吗?我怀疑,因为小部件在主屏幕进程中作为RemoteViews运行,对db的访问在某种程度上是有限的?有关于此的任何想法,想法和提示吗?