`
- 浏览:
1589260 次
- 性别:
- 来自:
上海
-
- public class ScreenTest extends Activity {
-
-
class SmsContent extends ContentObserver{
-
private Cursor cursor = null;
-
public SmsContent(Handler handler) {
-
super(handler);
- }
-
-
-
-
-
-
-
-
-
-
@Override
-
public void onChange(boolean selfChange) {
-
-
super.onChange(selfChange);
-
-
cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc");
-
-
if (cursor != null){
-
ContentValues values = new ContentValues();
-
values.put("read", "1");
- cursor.moveToFirst();
-
while (cursor.isLast()){
-
-
getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)});
- cursor.moveToNext();
- }
- }
- }
- }
-
-
-
@Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
SmsContent content = new SmsContent(new Handler());
-
-
this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
2. 注册ContentObserver:在需要开始监听的地方,如Activity或Fragment的onResume()方法中,使用ContentResolver注册ContentObserver。 ```java ContentResolver contentResolver = getContentResolver(); ...
首先,我们需要了解`ContentObserver`的基本用法。`ContentObserver`是一个抽象类,它提供了`onChange()`方法,当所观察的Uri(内容URI)发生改变时,这个方法会被系统调用。要创建一个自定义的`ContentObserver`,...
当ContentProvider中的数据通过insert、delete或update方法发生改变时,ContentProvider会调用`getContext().getContentResolver().notifyChange(Uri uri)`来通知所有关注该数据的ContentObserver。这里的Uri参数...
首先,我们需要在应用中注册 ContentObserver,通过 `getContentResolver().registerContentObserver()` 方法,传入想要观察的 URI 和一个 Handler。对于未接电话,我们使用的是 CallLog.Calls.CONTENT_URI,这是一...
- 注销:当不再需要监听数据变化时,应使用ContentResolver的unregisterContentObserver()方法移除ContentObserver,以避免内存泄漏。 2. **回调方法onChange()**: - 当注册的Uri或其子Uri发生变化时,系统会...
在`ContentObserverTest`中,开发者可能会创建一个ContentObserver的实例,然后使用`getContentResolver().registerContentObserver()`方法注册这个观察者,传入ContentProvider的特定URI。一旦注册,每当...
创建自定义的ContentObserver时,需要重载onChange()方法,并且可以使用Handler对象来处理与UI的交互。例如,如果你想要在主线程(UI线程)中更新UI,可以使用主线程的Handler对象。对于非UI线程,则可以使用任何...
ContentObserver允许开发者注册对特定Uri的兴趣,一旦这个Uri对应的数据库有任何更新,ContentObserver的`onChange()`方法就会被调用,从而使得应用程序能够及时响应数据变化。下面将详细介绍如何在Android中使用...
本文将详细讲解如何使用ContentObserver来实现这一功能。ContentObserver是一种观察数据内容变化的机制,通常用于监听数据库(如SQLite)或ContentProvider中的数据变动。 首先,我们需要在AndroidManifest.xml文件...
"Content Observer Demo 源代码" 是一个关于Android开发的示例项目,它演示了如何使用ContentObserver类来监听系统中的数据变化,特别是与短信(SMS)相关的数据变化。在这个项目中,开发者可以学习到如何实时监控...
最后,为了性能考虑,记得在不再需要观察短信变化时,使用`unregisterContentObserver()`取消注册ContentObserver,以避免不必要的资源消耗: ```java getContentResolver().unregisterContentObserver(c); ``` 综...
add方法用于增加观察者,remove方法用于删除观察者,notifyWatcher方法用于向观察者传输信息。 3. 具体观察者(ConcreteWatcher) 具体观察者是一个类,实现了抽象观察者的接口。在本例中,具体观察者覆盖了...
在提供的压缩包文件"SubjectObserverDemo"中,很可能包含了一个关于Observer模式的实战例子,可能涵盖了ContentObserver和BroadcastReceiver的使用,通过查看这个示例项目,你可以更深入地理解如何在Android应用中...
要使用ContentObserver,首先需要创建一个实现ContentObserver的类,并定义onChange()方法。然后,通过ContentResolver注册ContentObserver,通常在Activity或Service的onResume()方法中进行,而在onPause()或...
除了基本的ContentObserver,还可以结合Handler使用,因为ContentObserver的`onChange`方法是在主线程中调用的。如果更新操作比较耗时,可能会阻塞主线程,这时可以创建一个Handler实例,将耗时操作放在Handler的...
ContentResolver提供了诸如查询、插入、更新和删除数据等方法,并且支持观察者模式,可以通过registerContentObserver方法注册ContentObserver来监听数据变更。 在Android开发中,通过ContentProvider和...
创建一个自定义的`ContentObserver`类,继承自`android.database.ContentObserver`,并重写`onChange()`方法,这个方法会在数据发生变化时被调用。 ```java class MySimObserver extends ContentObserver { ...
下面详细介绍一下DownloadManager的使用方法以及如何监听下载进度。 首先,DownloadManager是自Android 2.3(API level 9)起提供的系统服务。它允许应用执行后台下载任务,并提供了一系列API来管理这些任务。...