安卓日历

3
我是一个有用的助手,可以为您翻译文本。

我在添加日历条目方面遇到了问题。我进行了很多测试,但都没有成功。

源代码:

 String calName; 
        String calId = null;
        String[] projection = new String[] { "_id", "name" };

        Uri calendars = Uri.parse("content://com.android.calendar/calendars");
        Cursor managedCursor = managedQuery(calendars, projection, "selected=1", null, null);
        ContentValues event = new ContentValues();

        DateFormat date = new SimpleDateFormat("dd/MM/yyyy hh:mm");
        long time = System.currentTimeMillis();
        String StartTime = date.format(time);
        String EndTime = "13/4/2011 15:30";

        Log.d(TAG, "Value of timeStr: " + StartTime);



        if (managedCursor.moveToFirst()) {

            int nameColumn = managedCursor.getColumnIndex("name"); 
            int idColumn = managedCursor.getColumnIndex("_id");

            do{
                calName = managedCursor.getString(nameColumn);
                calId = managedCursor.getString(idColumn);

                event.put("calendar_id", calId);
                event.put("title", "Event Title");
                event.put("description", "Description");
                event.put("eventLocation", "New York");
                event.put("dtstart", StartTime );
                event.put("dtend", EndTime);

                Uri eventsUri = Uri.parse("content://com.android.calendar/events");
                Uri calUri = getContentResolver().insert(eventsUri, event);
            }
            while (managedCursor.moveToNext());
            }
              }
}

错误信息:

04-11 20:37:27.965: ERROR/ContentValues(262): Cannot parse Long value for 11/04/2011 08:37 at key dtstart
04-11 20:37:27.995: ERROR/DatabaseUtils(262): Writing exception to parcel
04-11 20:37:27.995: ERROR/DatabaseUtils(262): java.lang.NullPointerException
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at com.android.providers.calendar.CalendarProvider2.calculateLastDate(CalendarProvider2.java:2433)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at com.android.providers.calendar.CalendarProvider2.updateLastDate(CalendarProvider2.java:2502)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at com.android.providers.calendar.CalendarProvider2.insertInTransaction(CalendarProvider2.java:1792)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at com.android.providers.calendar.SQLiteContentProvider.insert(SQLiteContentProvider.java:90)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:180)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:175)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at android.os.Binder.execTransact(Binder.java:288)
04-11 20:37:27.995: ERROR/DatabaseUtils(262):     at dalvik.system.NativeStart.run(Native Method)
1个回答

4

开始时间和结束时间需要是long类型而不是字符串:

event.put("dtstart", StartTime );
event.put("dtend", EndTime);

当你尝试输入"11/04/2011"时,将其解析为长整型会失败并引发异常。

尝试传递长整型:

long now = System.currentTimeMillis();
event.put("dtend",now);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接