问题标签 [android-contentprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2289 浏览

android - 如何将 sqlite3 关键字 DISTINCT 注入 Android ContentProvider 的查询?

我有一个 SQL 语句,可用于从我的 Android sqlite3 数据库返回不同的行,我想通过ContentProvider's 查询传递它。

例如:

需要是

有没有一种干净的方法可以将额外的关键字传递给 select 语句?

0 投票
1 回答
1483 浏览

android - 性能密集型较低 - 通过 Intent 或使用 Content Provider 传递包

我想在 Android 中的两个应用程序之间传递大量数据(约 1500 字节),其中性能和资源分配是优先考虑的。数据基本上是键值对。它需要从一个应用程序传递到另一个应用程序的速率可能在一秒钟内从涓涓细流到约 50 个数据包不等。我想我可以:

  1. 将所有数据包装在一个包中,并通过一个 Intent 将包从一个应用程序传递到另一个应用程序。我担心分配和取消分配所有内存以存储捆绑包的性能影响。

  2. 将所有数据写入 SQLite 数据库,并通过内容提供程序将其提供给其他应用程序。在这里,我担心将所有数据写入磁盘,然后在请求时必须从磁盘读回它对性能的影响。

那么,两害相权取其轻?

0 投票
3 回答
12780 浏览

android - 如何在 android 内容提供程序中存储大 blob?

我有一些需要存储在内容提供商中的大文件(图像和视频)。android文档表明...

如果您要公开太大而无法放入表本身的字节数据(例如大型位图文件),则将数据公开给客户端的字段实际上应该包含一个内容:URI 字符串。这是允许客户端访问数据文件的字段。该记录还应该有另一个名为“_data”的字段,其中列出了该文件在设备上的确切文件路径。此字段不打算由客户端读取,而是由 ContentResolver 读取。客户端将在包含项目 URI 的面向用户的字段上调用 ​​ContentResolver.openInputStream()。ContentResolver 将为该记录请求“_data”字段,并且由于它具有比客户端更高的权限,它应该能够直接访问该文件并将该文件的读取包装返回给客户端。-- http://developer.android.com/guide/topics/providers/content-providers.html#creating

我很难找到一个例子。特别是我希望在 ImageView 上下文中使用位图。考虑以下代码准代码(它不起作用)...

观察/问题...

  1. 如何正确重建存储/恢复的 uri?(它是表中的文字)
  2. setImageURI 实现使用内容解析 openInputStream 所以这应该可以工作。

    --frameworks/base/core/java/android/widget/ImageView.java

我让它工作了。我从 MediaStore 和 MediaProvider 得到了提示。包含数据的文件根据内容提供者(目录)、列名、行 ID 和媒体类型命名。内容解析器然后像这样获取文件描述符......

...内容提供者以实物回应...

0 投票
1 回答
4508 浏览

android - 如何在活动之外查询联系人内容提供者?

我正在尝试在 Activity 之外查询联系人内容提供者。但是 managedQuery 是 Activity 的一种方法。我可以使用任何其他类/方法来代替 managedQuery 吗?

这是我的代码:

0 投票
2 回答
1498 浏览

android - Android 内容提供者

我想获取创建数据库的内容提供者的代码。我正在使用位于此处的工具 tools/sqllite3.exe 来检查数据库是否已创建。

请让我知道这件事的分步程序...

感谢:D

0 投票
1 回答
1883 浏览

android - Android ContentProvider Uri 匹配

我正在尝试创建一个内容提供程序,其中密钥包含正斜杠“/”。我搜索了很长一段时间,但没有地方/例子说明它。

内容://com.lily.provider/items/*

我理解的一般示例: content://com.lily.provider/items/ab

我想要做的:我的密钥是一个带有“/”
内容的字符串://com.lily.provider/items/a/b 其中a/b 是项目ID,它与ab 的位置相同。

我的问题:

  1. content://com.lily.provider/items/a/b 会匹配到 content://com.lily.provider/items/* 吗?这是为什么?
  2. 有什么变通方法可以用来解决问题
0 投票
1 回答
3079 浏览

android - getContentResolver().openOutputStream(uri) No files supported by provider

I want store a file audio in my personal content provider. i save record:

Uri uri = getContentResolver().insert(CONTENT_URI, values); OutputStream os = getContentResolver().openOutputStream(uri);

but getContentResolver().openOutputStream(uri); throws:

10-13 19:44:53.903: ERROR/TAB(5679): No files supported by provider at content://com.memento.data.provider.MementoProvider/audionotes/6 10-13 19:44:53.903: ERROR/TAB(5679): java.io.FileNotFoundException: No files supported by provider at content://com.memento.data.provider.MementoProvider/audionotes/6 10-13 19:44:53.903: ERROR/TAB(5679): at android.content.ContentProvider.openFile(ContentProvider.java:585)

I have a column named _data for that purpose.

0 投票
1 回答
396 浏览

android - UriMatcher 类的 match(Uri) 是可重入的吗?

我看到的如何制作 a 的示例ContentProvider都使用了UriMatcher#match(Uri)insertqueryupdate方法delete中的方法来轻松处理内容提供​​者响应的所有 URI 模式(例如:http: //developer.android.com/资源/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html)。直到今天,当我在ContentProviderAPI 文档中注意到insertqueryupdatedelete“可以 [all] 从多个线程调用”时,这对我来说似乎还可以。此外,UriMatcher文档没有说明线程安全或是否match可重入。

我是否需要担心在我的、、和的实现中使用match的共享static实例上的同步调用?UriMatcherinsertqueryupdatedelete

0 投票
3 回答
3943 浏览

android - ContentProvider 中的光标包装/展开

我正在创建 ContentProvider ,它是另一个 ContentProvider 的代理(用于安全问题并提供对完整应用程序部分功能的访问权限)。

从我的 CP 调用内部 CP 后,我收到了意外的异常:

异常涉及 CP 对 Cursor 的包装并将其转移,外部 CP 无法再次包装,所以我在这里有问题。当我检查返回游标的类时,我收到了 CursorWrapperInner。

有没有办法在我的外部 CP 中解开光标(从这个 CWI 到常规光标)(但不是通过循环将所有数据传输到 MatrixCursor - 这太耗时了)。

0 投票
3 回答
48411 浏览

android - 如何使用 Android SyncAdapter?

我尝试了解 Android 同步逻辑。我不明白的是syncadapter.xmlAndroid SDK 示例项目中包含的文件SampleSyncAdapter。如果您下载了 SDK 示例,它应该位于以下文件夹中:

我读到,内容提供者的权限应该是一个字符串或对资源的引用。内容权威到底是什么,在哪里com.android.contacts?这是文件的内容(无许可证信息和注释,API 级别 16)。