SQLiteOpenHelper 与 ContentProvider

2024-02-12

我是 Android 开发新手。我正在尝试创建一个从内部数据库(SQLite)读取并列出列表中的所有数据的应用程序(我正在使用listView).

到目前为止我有一门叫做DatabaseHandler延伸SQLiteOpenHelper这就是执行所有数据库操作(选择数据、插入数据、删除数据……)。

但现在我想列出这些值,我在一些网站上读到我必须使用Loader代替Cursor,因此ContentProvider。到目前为止我明白了ContentProvider提供对数据库的受控访问。

我的问题是:ContentProvider做同样的事情SQLiteOpenHelper?

另外,我正在使用 API 级别 8 和ContentProvider仅适用于 API 级别 11。解决此问题的最佳方法是什么?

提前致谢。


我的问题是:ContentProvider 的作用与 SQLiteOpenHelper?

ContentProvider由应用程序的开发人员实现,如果他或她允许其他开发人员在其应用程序中访问应用程序的数据库 - 只需将sharing。它就像某个数据库的服务器,它的客户端是ContentResolver谁知道ContentProvider的权威。例如,如果您需要从设备获取一些联系人,那么您应该使用ContentProvider联系人数据库,更具体地说是合约类 http://developer.android.com/reference/android/provider/ContactsContract.html.

如果您知道适当的权威机构ContentProvider您可以使用ContentResolver目的。

在其他情况下,您应该通过 SQL 抽象模型与数据库交互,该模型表示为android.database http://developer.android.com/reference/android/database/package-summary.html and android.database.sqlite http://developer.android.com/reference/android/database/sqlite/package-summary.html类。

并且 -ContentProvider可从主要 API 级别作为应用程序的主要组件之一使用。

Update

来自官方文档:

在开始构建提供程序之前,请执行以下操作:

决定您是否需要内容提供商。您需要构建一个内容 provider 如果您想提供以下一项或多项功能:

  • 您想要向其他应用程序提供复杂的数据或文件。
  • 您希望允许用户将复杂数据从您的应用程序复制到其他应用程序中。
  • 您希望使用搜索框架提供自定义搜索建议。
  • 本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    SQLiteOpenHelper 与 ContentProvider 的相关文章

    • 如何在 Android 中使用 Assets 中预加载的 SQLite 数据库

      我想用preloaded database在我的应用程序中意味着尝试在安装 apk 时获取数据库 以便可以使用已保存在其中的数据 我复制了 成分 db 文件位于资产文件夹中 并使用以下代码 但这会出现错误 从资源文件复制数据库时出现问题 我
    • 使用 android AudioTrack 在左或右扬声器中播放声音

      我正在应用程序中的 AudioTrack 的帮助下播放声音 但我想在特定扬声器 耳朵中播放声音 即左扬声器或右扬声器或两个扬声器 以下代码是我用来播放声音的 private AudioTrack generateTone double fr
    • 安卓无法玩ogg

      有人知道这是什么意思吗 ogg使用phonegap is Media播放 它使用MediaPlayer 05 26 15 41 50 007 1160 3631 E AudioFlinger no more track names avai
    • 在 Anko DSL 中创建自定义 View/ViewGroup 类

      我想创建一个自定义视图 它只是一些 Android 视图的包装 我考虑创建一个自定义 ViewGroup 来管理其子视图的布局 但我不需要这么复杂 我基本上想做的是 class MainActivity verticalLayout tex
    • android webview 函数 onPagefinished 被调用两次

      我的android webview功能onPageFinished被调用两次 我不知道为什么 但它在 android 2 2 上运行良好 但当我将其升级到 4 时 它就不起作用了 代码附在下面 Code Override public vo
    • 毕加索动画加载图像

      我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
    • Firestore - RecycleView - 图像持有者

      我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
    • finish() 完成活动但它仍然在后台

      我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
    • 如何使用 Firebase UI 在 recyclerView 中显示时从 Firebase 数据库中的子级引用父级

      我目前正在引用 quote text 子项 这些数据显示在recyclerview using firebase用户界面 我想获取 quote text 的父名称 如何获取 quote text 孩子的父母姓名 When user clic
    • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

      在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
    • 如何在进入新活动之前终止线程和处理程序

      大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
    • BottomSheetDialog get Behavour 始终返回 null

      我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
    • Vimeo 视频在 Android 6 设备上停止播放

      我正在尝试在我的应用程序中播放 Vimeo 的视频 问题是在 Android 6 设备上 视频会在一定时间后停止播放 在 API 较低的设备上一切正常 时间取决于质量 对于下面提供的网址的视频 播放一定分钟 1 到 3 视频质量有多低 播放
    • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

      我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
    • 在Android Studio中更改项目主题?

      我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
    • Android - 9 补丁

      我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
    • FCM onMessageReceived 应用程序运行时返回空白消息和标题

      正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
    • 在android中跟踪FTP上传数据?

      我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
    • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

      如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
    • Android ScrollView fillViewport 不工作

      我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示

    随机推荐