问题标签 [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 投票
5 回答
12999 浏览

android - 如何使用内容解析器/提供者测试课程?

我正在尝试测试查询内容解析器的类。

我想使用MockContentResolver和模拟query方法。

问题是这种方法是最终的。我该怎么办?使用模拟框架?嘲笑其他班级?提前致谢。

0 投票
2 回答
1714 浏览

android - 在终结器中释放语句

我的代码是:

但是会抛出这样的异常:

请提供解决方案来解决这个问题

0 投票
2 回答
9182 浏览

android - 当为给定的 URI 调用 ContentResolver.notifyChange() 时,是否会通知观察该 URI 的后代 URI 的 ContentObservers?

一个有希望的直截了当的问题:何时ContentResolver.notifyChange()调用给定的 URI,是否会通知ContentObserver观察该 URI 的后代URI?

例如,假设我有一个光标设置来观察特定资源的 URI:

然后我通知ContentResolver这个 URI 的祖先的更改(例如,因为我已经删除了所有订单):

我的Cursor,注册观察uriA,会收到通知吗?

0 投票
2 回答
1668 浏览

java - 如何使用 getContentResolver().query 进行多重选择参数?

我正在尝试使用getContentRsolver().query()多个选择参数,但无法找出正确的语法。我正进入(状态"SQLiteException: bind or column index out of range"

contactNumberArray是一个包含所有联系电话的字符串数组。

如果我在字符串数组中只有一个联系电话,则此查询可以正常工作,但如果我有多个联系电话,则它不起作用。是否有任何特定的方法来查询多个 selectionargs ?

请让我知道是否有人对此问题有任何指示?

0 投票
1 回答
1089 浏览

android - 使用 AccountManager addAccountExplicitly 第一次同步需要很长时间

我使用 AccountManager addAccountExplicitly() 将帐户添加到 AccountManager。然后我打电话

之后,在查看设备的“帐户和同步”屏幕时,我看到了我的帐户,但是当我单击时,我看到“同步联系人”复选框没有出现。它可能需要几分钟才能出现...

我发现如果我收听正在添加的帐户,并在延迟(2 秒)后调用:

它正在同步。

1.为什么账号同步需要时间?2.这是使帐户立即同步的正确方法吗?(这会一直有效吗?)

0 投票
1 回答
3105 浏览

sync - 使用 SyncStatusObserver 或通过其他方式获取同步状态信息?

具体来说,我有一个令人难以置信的“Droid HTC”,Android 版本 2.2,基带 2.15.00.07.28,内核 2.6.32.17-g9a2fe16,内部版本 3.26.605.1,软件编号 3.26.605.1

我已经安装好 Eclipse 和 Android SDK 并且运行良好。很高兴我可以在 Eclipse 中调试和在我的 Droid 上执行单步代码。

我已经阅读了许多书籍并尝试了所有示例,作为实践,并且正在建立在其他面向对象语言(包括 C++)的多年软件开发经验(> 10 年)的基础上,而不是 Java,但我正在挑选它很快就起来了。

我还下载了在我的“Droid running repo / git”上运行的源代码版本,我一直在研究 FRG83G packages/apps/AccountsAndSyncSettings/src/com/android/settings 代码.

现在。我想编写一个小应用程序,它会在同步失败时通知我。我试图解决的问题是,在我使用 GMail 联系人界面(例如)进行了大量更改之后,'Droid 无法同步它们(可能是删除太多?)。因此,当同步始终失败时,我想显示一个通知栏图标,让我知道此同步失败。如果没有这样的应用程序,它失败的第一个迹象是我可能在 2-3 天后发现缺少联系信息。

因此,逻辑似乎表明我的小应用程序需要成为 SyncStatusObserver 才能在同步操作更改状态时得到通知,然后在该同步上获取 SyncStatusInfo 并注意哪个同步失败以及何时失败。据我所知,这意味着实现一个 SyncStatusObserver 并通过调用 ContentResolver.addStatusChangeListener 将其连接到广播。我已经实现了这一点,并且确实看到了通知消息。

我相信我理解对象模型,因为帐户类型具有零到多个帐户权限,并且每个帐户权限都表示正在同步的数据类型(联系人与日历等)。

SyncStatusObserver 的单一方法 onStatusChanged(final int which) 具有“int which”参数,该参数似乎试图指示哪个帐户类型或哪个帐户权限刚刚更改了它的同步状态。我已经编写并连接了它,并且正在接收这些方法调用,正如人们所期望的那样,当一种类型的数据已同步时。当我的应用程序正在执行时,我在 Eclipse 调试器日志记录窗口中观察到了这一点。

我的问题是如何将单个 int 参数值与帐户类型和/或帐户权限相关联?我想调用 SyncInfo getCurrentSync() 并记录帐户、权限和开始时间。(为什么要开始时间?我们真的不想要结束时间和结束状态吗?)

在 stackoverflow 上搜索,我发现在发布How do do one listen for progress from Android SyncAdapter? SyncStatusObserver 非常无用,因为它不能使用单个整数参数传达非常有用的信息。哦。好的。

我想还有另一种看待这个问题的方法是:在 HTC Incredible 上,当您在主屏幕上并选择菜单 -> 设置 -> 帐户和同步 -> 谷歌(列出的帐户)时,用户界面显示上次成功同步 GMail 帐户的每种帐户类型的时间。获取此信息的代码在哪里,因为这与我所追求的信息相同,并且我想在每次 SyncStatusObserver 的 onStatusChanged 方法调用之后获取此信息。

在发布Syncadapter last update date中,基本上表明当前 Droid 代码没有公开最后同步日期/时间。

有没有其他方法可以获取每个 SyncAdators 的最后成功同步日期/时间?我真的很想抓挠我的痒(可以这么说)。

0 投票
1 回答
1050 浏览

android - 来自内容提供商的内容解析器推送通知

我想知道如果内容提供者更改数据,是否有办法通知内容解析器。

就我而言,有一个显示数据库内容的应用程序。还有另一个应用程序可以修改 db 中的数据。现在我想知道是否可以通过推送通知应用程序后台数据已更改。

我没有找到有关连接到内容提供者的内容解析器的任何信息。我也知道无法以错误的方式在内容提供者和解析器之间进行通信。

如果可能或有更好的主意,现在就做任何人。

0 投票
1 回答
850 浏览

java - 需要共享 ContentProvider 代码但唯一的内容权限

我有一个公共库,它通过 ContentProvider 提供一个公共数据存储库。然后各个应用程序引用该库,但有自己独特的数据存储(即数据库模式是共享的,但每个应用程序都有自己的数据库)。

我的问题是,当我同时安装了两个应用程序时,由于权限相同,我遇到了冲突。所以我需要为每个应用程序有一个唯一的内容权限,但是找不到在代码中引用唯一权限的好方法(配置清单不是问题)。我按照建议在每种类型中使用静态 CONTENT_URI,但需要为每个应用程序返回不同的值(引用特定于应用程序的权限)。恐怕我需要把所有东西都变成非静态访问器,但我真的不想这样做。还有其他我想念的方式吗?也许我可以在清单中设置一些东西?

0 投票
1 回答
1009 浏览

android - Android 优化 ContentResolver 上的查询

有没有办法加快对内容解析器的查询?我发现即使有适当的投影,查询联系人也需要一些时间。

0 投票
2 回答
39784 浏览

android - 什么是 uri,contentValues

谁能解释一下我在处理日历事件时使用的每个术语?

  1. Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
    这里的 uri 是什么,实际上是什么内容,因为我们可以将 int 值初始化为 0?是否
    可以使用默认值初始化 uri?

  2. Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
    这些uri是什么意思?event_uri和 和有什么区别reminder_uri

  3. ContentValues values = new ContentValues();
    values.put("calendar_id", 1);
    values.put("title", str);
    values.put("description", m_strDescription);

    第一个是做什么的?values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    内容解析器有什么用?有时我们会写:

    Uri u = cr.insert(event_uri, values)
    这是什么uri?它与前两个 uris 有何不同,例如event_urireminder_uri

    再次values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    它有什么作用?