如何去倾听联系人数据库中的更改
嗨,
我想听联系人数据库中有任何改变。
所以我创建我 contentObserver,是 ContentObserver 儿童类:
private class MyContentObserver extends ContentObserver { public MyContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
System.out.println (" Calling onChange" );
}
}
MyContentObserver contentObserver = new MyContentObserver(); context.getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver);
当我使用 'EditContactActivity',但若要更改联系人数据库,我 onChange 函数不会被调用。
来自这个问题 stackoverflow.com
问题 hap497
答案
因为它是和正常工作,部署了您的示例。
package com.test.contentobserver;
import android.app.Activity;
import android.database.ContentObserver;
import android.os.Bundle;
import android.provider.Contacts.People;
public class TestContentObserver extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.getApplicationContext().getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver);
}
private class MyContentObserver extends ContentObserver { public MyContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
}
}
MyContentObserver contentObserver = new MyContentObserver();
} 所以,你必须做东西错了。
您是否更改通过游标观察员注册的吗?
检查与观察函数 deliverSelfNotifications()。(它将返回 false 默认情况下)
您可能要重写该观察器函数与类似:
@Override
public boolean deliverSelfNotifications() {
return true;
}
请确保所指 People.CONTENT_URI 正确的值 (android.provider.Contacts.People)。
此外,我会建议你处理程序使用 ContentObserver,虽然不是什么使您的代码错误在这种情况下。
分享到:
相关推荐
在Android开发中,ContentObserver是系统提供的一种机制,用于监听并响应系统中ContentResolver的特定内容更改。这个类是Android框架的重要组成部分,特别是在处理数据变化和实时同步的应用场景下。本文将深入探讨...
`ContentObserver` 是Android提供的一种机制,允许应用程序监听系统内容提供者的变更,包括数据库记录的增删改等操作。在这个场景中,我们将详细讲解如何自定义`ContentObserver`来监听数据库数据的变化。 首先,...
ContentObserver内容观察者是Android系统中用于监听ContentProvider数据变化的一种机制。当ContentProvider的数据发生变化时,ContentObserver能够及时通知应用程序,以便应用可以根据新的数据状态做出相应的反应。...
ContentObserver 是 Android 系统提供的一种机制,用于监听数据内容的变化。它与 BroadcastReceiver 类似,但主要用于观察 ContentProvider 中的数据变动。在 Android 中,ContentProvider 是一个管理应用程序间数据...
在Android开发中,ContentObserver(内容观察者)是一种非常重要的组件,它允许应用程序监听系统或应用内部数据的变化。本自学笔记将深入探讨ContentObserver的工作原理、使用场景以及如何实现它。 ContentObserver...
在Android开发中,ContentProvider和ContentObserver是两个非常重要的组件,它们主要负责数据的存储和监控。本篇文章将深入探讨这两个组件以及如何结合使用来实现数据的共享与实时更新。 首先,ContentProvider是...
在Android开发中,ContentObserver类是一个非常重要的工具,它提供了一种机制来观察数据的变化。ContentObserver是基于观察者设计模式,可以监听特定URI(统一资源标识符)引起的数据库的变化。当被观察的URI对应的...
在Android开发中,ContentObserver是用于监听ContentProvider中数据变化的重要工具。ContentObserver允许开发者注册对特定Uri的兴趣,一旦这个Uri对应的数据库有任何更新,ContentObserver的`onChange()`方法就会被...
本文将详细讲解如何使用ContentObserver来实现这一功能。ContentObserver是一种观察数据内容变化的机制,通常用于监听数据库(如SQLite)或ContentProvider中的数据变动。 首先,我们需要在AndroidManifest.xml文件...
"Content Observer Demo 源代码" 是一个关于Android开发的示例项目,它演示了如何使用ContentObserver类来监听系统中的数据变化,特别是与短信(SMS)相关的数据变化。在这个项目中,开发者可以学习到如何实时监控...
主要介绍了Android 中使用ContentObserver模式获取短信用正则自动填充验证码,首先使用了ContentObserver监听短信,然后从短信中用正则的分组去拿到验证码,具体实现代码大家参考下本
一个例子实现两个功能,一可以监听飞行模式是否发生改变,二可以监听手机短信数据库发生改变。当收到消息时候,短信数据库监听触发,这时候可以去把收到的短信读出来。...用ContentObserver这个监听类去实现监听短信。
内容观察者(ContentObserver)是Android系统中一个关键的组件,它主要用于监控数据内容的变化,如联系人、短信等数据库的变更。这个概念是基于观察者模式,它允许应用程序订阅并接收数据变化的通知,以便在数据发生...
本文将详细介绍两种常见的截图事件监听方法:监听截屏图片所在目录变化(FileObserver)和监听媒体库的变化(ContentObserver),以及它们在实际应用中可能遇到的问题和解决方案。 首先,我们可以使用`FileObserver...
在Android中,短信存储在content://sms/的ContentProvider中,我们可以注册ContentObserver来监听这个URI的变化。以下是一个简单的ContentObserver的实现: ```java public static class SMSCodeObserver extends ...