用户添加后获取日历事件ID

时间:2014-06-02 06:11:56

标签: java android

我有一个问题:如何获得正确的日历事件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)

0 个答案:

没有答案