如何获取日历更改事件?日历观察员是否工作?
问题描述:
我想在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");
}
}
注册它在我的主要活动,但它不工作。
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);
还试图用意图接收器,因为我看到了下面的日志从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监视改变光标。