gpt4 book ai didi

android - 如何获取日历更改事件?日历观察器在工作吗?

转载 作者:行者123 更新时间:2023-11-30 04:19:50 29 4
gpt4 key购买 nike

我想在 Android 设备上接收日历更改事件。我尝试为它注册一个观察者,但它不起作用。

我是否必须定期检索所有事件才能知道发生了什么变化?

这是我的代码,感谢任何回复。

public class CalendarObserver extends ContentObserver 
{
public CalendarObserver(Handler handler) {
super(handler);
}

public boolean deliverSelfNotifications() {
return true;
}

public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.i("", "Calendar changes");
}
}

在我的主要 Activity 中注册它,但它不起作用。

CalendarObserver observer = new CalendarObserver (new Handler());
getContentResolver().notifyChange(
Uri.parse("content://com.android.calendar/events"), observer);

也试过了...,还是不行

String[] projection = new String[] { "_id"};
Uri calendars = Uri.parse("content://com.android.calendar/calendars");
//Uri calendars = Uri.parse("content://com.android.calendar/events");
//Uri calendars = Uri.parse("content://calendar/calendars");
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query(calendars, projection, null, null, null);
cursor.registerContentObserver(observer);

也尝试过使用intent receiver,因为我从logcat看到了如下日志,但它仍然无法正常工作。

 I/CalendarProvider2(13444): Sending notification intent: Intent { act=android.intent.action.PROVIDER_CHANGED dat=content://com.android.calendar }

...

 CalendarReceiver receiver= new CalendarReceiver ();
filter = new IntentFilter();
filter.addAction("android.intent.action.PROVIDER_CHANGED");
registerReceiver(receiver, filter);

最佳答案

你可以试试下面的代码,

String[] projection = new String[] { "_id" };
Uri calendars = Uri.parse("content://calendar/calendars");

Cursor managedCursor = managedQuery(calendars, projection, null, null, null);

然后使用 registerContentObserver监视 Cursor 的变化。

关于android - 如何获取日历更改事件?日历观察器在工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440993/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com