问题标签 [contentobserver]

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 投票
3 回答
2643 浏览

android - ContentObserver 获取有关删除的通知,但不获取插入或更新的通知

我的活动中有以下代码:

...在我用来获取数据的 DataProvider 中,我将查询方法中的通知 URI 设置为我要查询的类型的 uri:

最后,在更新、插入和删除中,如果操作成功,则通知订阅者:

上面一行中的 notificationUri 是正在插入/更新或删除的项目的 URI。

在“...snip...”代码行设置断点后,我添加、删除和更新了一些记录。我只会收到有关删除的通知,而不是更新或插入的通知。我究竟做错了什么?

0 投票
2 回答
3112 浏览

android - 阻止 Android ContentObserver 被多次注册

出于某种原因,我的 android ContentObserver 被多次注册。ContentObserver 在我的主 Activity 中被定义为一个内部类。然后在我的 onCreate() 方法中实例化并注册它。

我认为 onCreate() 被多次调用,以及我的主要活动通常被多次实例化。为了防止这种情况,我尝试在我的 Android 清单中添加一个启动模式,但它似乎没有奏效:

在我的 onCreate 中注册之前,我也尝试过取消注册 Oberservers,但我认为因为它是我的主 Activity 的一个新实例,它没有做任何事情。

关于如何防止这种情况发生的任何想法?我还在我的主 Activity 中创建了一个可运行的和一个处理程序,我设置为定期运行,它遇到了同样的问题。理想情况下,修复程序也可以解决该问题。我很确定根本问题是我的主要 Activity 被实例化了不止一次,但是由于 launchMode 没有修复它,我不确定下一步该转向哪里。

任何帮助是极大的赞赏。谢谢

0 投票
1 回答
400 浏览

android - 将联系人姓名同步到日历事件描述的最佳方法是什么

我的应用程序创建日历事件,其中事件的描述中有一个联系人姓名。当用户使用电话的联系人更改联系人姓名时,我希望更改流向日历事件的描述字段。

最好的方法是什么?

我可以想到两个选择。两者都包括我自己的数据库中的联系人姓名的副本。当发生更改时,查找记录更改的记录并更新日历事件。

问题是如何有效地将新名称移动到我的数据库中。

  1. 在联系人上注册内容观察员并比较所有联系人姓名。
  2. 使用同步适配器

哪种方法真的更有效?

我不熟悉同步适配器,但我假设适配器不需要帐户(有这样的事情吗?),我希望更改立即流动(即不是在下一次预定同步时)

任何帮助,包括完全不同的方向,将不胜感激。

0 投票
1 回答
3751 浏览

android - Android:如何在没有活动的情况下注册内容观察者?

我需要收听所有传入和传出的短信并将其存储在文本文件中。为此,我使用广播侦听器来侦听所有传入消息。这工作正常。但是对于传出的短信,如何在没有活动的情况下注册内容观察者?我不想在我的应用程序中进行任何活动。现在广播接收器即使在重新启动后也会收听,内容观察者即使在重新启动后也会收听吗?如何合并这两个功能?

这是我的 manifest.xml 的一部分

这里,扩展广播接收器的类

任何帮助表示赞赏。谢谢。

0 投票
1 回答
569 浏览

android - 获取内容提供者的更改

我正在开发一个将远程日历与 Android 设备同步的应用程序。

一切正常,但现在我想通过让 Android 设备仅同步用户编辑的事件(使用 Android 日历)来加快速度。所以我需要知道哪些事件被编辑了。

我一直在研究,ContentObserver但这似乎不是一个好的解决方案,因为我必须为日历中的每个事件注册一个观察者。而且我什至不知道如果我重新启动设备,观察者是否还会在那里。

我想出的另一个解决方案是将所有事件的副本存储在本地数据库中。该数据库将在每次同步时更新。在每次同步之前,我们可以将该数据库与 Android 日历提供程序进行比较......

有没有更简单的方法来做到这一点?

谢谢,吉利斯

0 投票
1 回答
603 浏览

android - 使用同步适配器来维护传入的提要

我找不到这方面的具体示例,尽管这似乎是一条相当完善的路径,也是同步适配器的主要用途之一。我已经实现了大部分,但仍有一些问题需要解决。这是我现在的基本策略

执行同步

  • 找出本地存储的最后一项
  • 如果没有本地项目,则将新项目拉到某个最大大小
  • 如果有本地项目,拉新项目直到到达本地项目
  • 删除超过最大项目大小的项目

我有一个带有内容观察器的列表适配器,它应该反映同步的信息。

问题: 如果所有这些都是合理的,我目前的困境是如何从数据库中删除项目。我假设在使用内容时我应该避免任何删除,但是在我的同步适配器中,我如何知道当前是否正在观察数据?(观察者的静态地图?)

补充: 除此之外,我希望有一些这样的例子,这样我就可以预见到其他问题。我知道 google IO 演讲,它有一些很棒的高级哲学,但细节会为许多非专家开发者创造奇迹。

我认为这是一个非常有价值的功能,所有 Android 拥护者都希望完成并且做得正确,因为同步适配器提供了 Android 最令人向往的功能之一,并且只能帮助增加用户群,帮助我们所有人.

0 投票
1 回答
5149 浏览

android - Android中的呼叫结束侦听器

我正在开发一个应用程序,我在其中存储来自CallLog提供商的呼叫日志详细信息。

Android 将呼叫日志存储在数据库中,我正在从该数据库中复制新行。

现在我想在用户结束通话时复制通话详细信息。为此,我使用了PhoneStateListener监听状态振铃、摘机和空闲模式的方法,但是在通话结束后,空闲方法调用了不止一次,所以我不能使用它。

其次,我用于ContentObserver通话记录表,当 Android 在其中插入通话详细信息时,它给了我 onChanged 事件,当时我将这些详细信息复制到我的数据库中。

这是正确的使用方法ContentObserver吗?有没有其他方法可以获取刚刚结束的新通话的详细信息?

0 投票
1 回答
558 浏览

android - 有没有一种简单的方法可以知道在将 ContentObserver 用于 android 联系人时更改了哪个联系人?

我在我的应用程序中存储了一些联系人,并想知道用户是否通过联系人应用程序编辑了其中的任何一个。所以我为此注册了一个 contentObserver。contentObserver 的“onChange()”方法不提供除“selfChange”布尔参数之外的任何内容。那么,除了遍历每个联系人并比较字段的更改之外,还有什么方法可以找到哪个联系人发生了变化?

0 投票
0 回答
248 浏览

android - 系统何时认为已读取短信/彩信?

我有一个 contentObserver 来监视短信的未读计数并在未读计数 = 0 时清除通知。

问题是系统何时决定一条消息未读,因为只有当有人回复消息时通知才会被清除,在我看来这似乎有点奇怪,因为它显然是在你回复之前被阅读的

0 投票
4 回答
16445 浏览

android - 如何让我的 Android ContentObserver for ContactsContract 检测到添加、更新或删除的联系人?

我能够收到“联系人数据库发生更改”的通用通知,但我想知道插入、更新或删除的特定记录。以下是注册并获取 onChange 通知的代码。不幸的是,这并不具体,这使得我的处理既详尽又低效。

这是代码存根: