我有一个问题:如何获得正确的日历事件ID?我有这个代码来添加事件:
Intent addMeetingEvent = new Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, appBeginTimeDate.getMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, appEndTimeDate.getMillis())
.putExtra(CalendarContract.Events.TITLE, "title")
.putExtra(CalendarContract.Events.DESCRIPTION, "desc")
.putExtra(CalendarContract.Events.AVAILABILITY, CalendarContract.Events.AVAILABILITY_BUSY);
startActivity(addMeetingEvent);
//in here the eventID is null, cause it has not been confirmed and saved by the user
//long eventID = Long.parseLong(CalendarContract.Events.CONTENT_URI.getLastPathSegment());
首先,我创建了意图并添加了额外的Android callendar lauches并显示了该事件。然后用户需要确认(或取消)。我的问题是 - 我如何以及何时获得eventID? 我需要存储它,因此可以删除事件(如果用户点击这样)。
修改 Jon Skeet告诉我之后我使用了startActivityForResult。我的回调是:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == 0){//EXCEPTION LINE BELOW
Uri dataUri = data.getData();
Log.d("TEST", dataUri.toString());
}
}
And I have an exception:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {xxx.BookAppointmentActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3176)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3219)
at android.app.ActivityThread.access$1200(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4856)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at xxx.BookAppointmentActivity.onActivityResult(BookAppointmentActivity.java:202)
at android.app.Activity.dispatchActivityResult(Activity.java:5231)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3172)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3219)
at android.app.ActivityThread.access$1200(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4856)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)