问题标签 [android-contentresolver]

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 投票
0 回答
819 浏览

android - 查询内容提供者时为列命名?

当用户搜索联系人时,我试图在搜索对话框中显示自定义建议。自定义建议要求内容提供程序返回一个列,其中一个列名为SearchManager.SUGGEST_COLUMN_TEXT_1.

我正在查询声明投影的联系人提供程序,如下所示:

但这是抛出异常:

我一直在研究,这是由于联系人提供程序strictProjectionMap在他们的 中设置了标志SQLiteQueryBuilder,所以我想知道是否有人有解决方法来指定别名。我找到了几个解决方案,但这些解决方案需要修改内容提供程序,在这种情况下这是不可能的,因为它是一个 Android 提供程序。

如果不可能,这种情况的最佳做法是什么?我当前的解决方案是使用正确的列名创建一个MatrixCursor,并将查询返回的游标中的所有值复制到联系人提供程序,但在效率方面感觉非常错误,所以我认为可能有更好的方法。

感谢您的建议。胡安

0 投票
4 回答
9551 浏览

java - ContentProvider insert() 总是在 UI 线程上运行?

我有一个应用程序需要从服务器中提取数据并将其插入 SQLite 数据库以响应用户输入。我认为这将非常简单——从服务器提取数据的代码是 AsyncTask 的一个相当简单的子类,它完全按照我的预期工作而无需挂起 UI 线程。我用一个简单的接口为它实现了回调功能,并将它包装在一个静态类中,所以我的代码如下所示:

一切都还好。即使服务器需要一个小时来检索数据,UI 仍然可以顺利运行,因为 getFolderContents 中的代码是在 AsyncTask 的 doInBackground 方法中运行的(它在与 UI 不同的线程中)。在 getFolderContents 方法的最后,调用 onFolderContentsResponse 并传递从服务器接收到的 FilesystemEntry 列表。我只是真的这么说,希望很清楚我的问题不在于 getFolderContents 方法或我的任何网络代码,因为它不会在那里发生。

当我尝试通过 onFolderContentsResponse 方法中的 ContentProvider 子类插入数据库时​​,就会出现问题;UI 总是在代码执行时挂起,这让我相信,尽管是从 AsyncTask 的 doInBackground 方法调用的,插入仍然以某种方式在 UI 线程上运行。以下是有问题的代码:

insertContentsIntoDB方法:

其中 mContentResolver 先前已设置为 getContentResolver() 方法的结果。

我尝试将 insertContentsIntoDB 放在它自己的线程中,如下所示:

我还尝试在其自己的线程中运行每个单独的插入(MyContentProvider 中的插入方法是同步的,因此这不会导致任何问题):

为了更好地衡量,我还使用另一个 AsyncTask 的 doInBackground 方法中的相关代码尝试了这两种解决方案。最后,我在我的 AndroidManifest.xml 中将 MyContentProvider 明确定义为存在于一个单独的进程中:

它运行良好,但它似乎仍然在 UI 线程中运行。这就是我真正开始为此而烦恼的地方,因为这对我来说根本没有任何意义。无论我做什么,UI 总是在插入过程中挂起。有没有办法让他们不这样做?

0 投票
1 回答
1681 浏览

android - Android:如何使用 UriMatcher 切换多表、查询参数和活动?

我想阅读您对如何解决以下问题的想法。以下是我正在处理的应用程序的基本要求。

  • 在地图上显示一个城市的多个位置。
  • 支持多个城市。
  • 在单独的详细信息视图中显示位置的属性。
  • 每个城市的位置属性不同

我想实现一个灵活的决策逻辑根据地图所在的位置在城市之间切换。这意味着,我依赖的初始信息是地图中心。这是理论上的工作流程。

  1. 从地图中获取当前中心位置。
  2. 将位置翻译成城市urluri
  3. 使用 url 通过 HTTP 下载位置。
  4. 将位置存储在本地数据库中。由于位置属性不同,每个城市一张表。
  5. 使用 uri 从内容解析器加载缓存或下载的数据。
  6. 创建覆盖项目并包括uri 引用唯一的 id
  7. 点击位置时打开详细信息视图。
  8. 详细信息视图应呈现城市特定的位置属性。
  9. 位置属性再次通过基于传递的 uri 和唯一 ID 的内容解析器加载。

问题:

  1. 我对如何使用类切换城市、查询参数(例如列名UriMatcher)特别感兴趣。
  2. 您会为每个城市准备一个详细视图吗?或者您是否看到任何基于可用属性信息交换文本字段、标签、.. 的实用解决方案?

为了说明不同的属性,这里有两个示例城市和一个内容提供商。

例子:

而另一个城市...

和内容提供商...

我不确定使用一个多个内容提供程序,因为我读过将所有数据库引用放在一个中可能会在将来同步数据时出现问题。

0 投票
1 回答
510 浏览

android - 列出所选帐户支持的授权

我正在尝试开发一个应用程序,它只使用ContentResolver.requestSync(account, authority, extras);.

我能够通过分别使用和作为来同步联系人和日历。com.android.contactscom.android.calendarauthority

但是,有什么办法可以得到特定帐户支持的权限列表?

另外,使用nullas 有什么作用authority

0 投票
2 回答
951 浏览

android - ContentResolver.SYNC_EXTRAS_EXPEDITED 的行为是否在任何地方定义?

有谁知道 ContentResolver.SYNC_EXTRAS_EXPEDITED 到底做什么的?该常量的 api 文档基本上是空白的。

这听起来像我想要的(先同步提供的帐户,然后再同步其他帐户),但肯定知道总是好的......

0 投票
1 回答
1188 浏览

android - 注册内容观察者

我想获得有关任何音频通知的回调。我创建观察者:

每次我都会 onChange,然后添加或删除一些歌曲。

但我不明白另一个:我将一些文件(test.log)复制到设备。复制文件后我没有得到 onChange 。但是如果我删除这个文件,我会得到 onChange。但为什么?

0 投票
1 回答
101 浏览

java - 在 Android 上使用 Java 选择第二条最近的短信

是否可以在 Android 平台上使用 Java 选择对话中的第二条消息?

我想查询收件箱并选择第二条最近的短信。使用上面的代码执行此操作的最佳方法是什么?是否可以如此细化查询?

0 投票
1 回答
1281 浏览

android - CallLog.Calls 中的 RuntimeException

如果我尝试查询CallLog.Calls. 我查询CallLog.CallswithcontentProvider以获取最后一个电话。

谁能帮助我为什么有时会收到此错误?我认为,这是一个系统错误/问题?

我查询 CallLog 的代码是:

0 投票
1 回答
1349 浏览

android - ContentResolver.insert() 没有立即反映?

我的活动的以下代码片段在我的应用程序的后续调用中onCreate()效果很好(即cursor.moveToFirst()true ):

所以,我确定正确cr.insert()执行。

但是在第一次调用我的应用程序时,cursor.moveToFirst()返回false,尽管cr.insert()前面有它。

为什么?

我需要某种“刷新”或“关闭”声明吗?

0 投票
1 回答
4529 浏览

android - Is there a Bookmark Contentprovider for Chrome to get browser history

I have an app that use ContentResolver to get the Browser history data with Browser.BOOKMARKS_URI. It works well with the stock Android browser. Now Google is moving to Chrome as the default browser. Does Chrome provide similar Contentprovider? I searched all over the web but could not find any information on this. Is there a doc for Chrome on Android released by Google yet? Thanks in advance!