我有一个应用程序,可以让用户在他设备的默认日历中插入一个事件
我开始使用以下代码将活动插入默认日历:
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true)
.putExtra(Events.RRULE, "FREQ=YEARLY;")
.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_FREE)
.putExtra(Events.TITLE, title)
.putExtra(Events.DESCRIPTION, description)
.putExtra(Events.HAS_ALARM, false);
context.startActivity(intent);
根据http://developer.android.com/guide/topics/providers/calendar-provider.html#intent-insert的SDK文档,这是在Android 4及更高版本中执行此操作的正确和推荐方法。
这适用于我的旧版三星Galaxy S和Android 4.0.3(旧版三星Galaxy S的TEAMSGS的准系统ICS自定义ROM)。
然而,在将三星Galaxy S2的朋友更新为Samsung Stock Android 4.0.4之后,此代码将导致ActivityNotFound异常:
android.content.ActivityNotFoundException:找不到要处理的Activity Intent {act = android.intent.action.INSERT dat = content:xxxxx(has 额外的)} android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1535) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1387) 在android.app.Activity.startActivityForResult(Activity.java:3195)at android.app.Activity.startActivity(Activity.java:3302)at com.radlmaier.heiligenkalender.rk.OptionsMenuHandler.onOptionsItemSelected(OptionsMenuHandler.java:119) 在 com.radlmaier.heiligenkalender.rk.Main.onOptionsItemSelected(Main.java:994) 在android.app.Activity.onMenuItemSelected(Activity.java:2507)at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:979) 在 com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 在 com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 在 com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 在 com.android.internal.view.menu.ListMenuPresenter.onItemClick(ListMenuPresenter.java:178) 在android.widget.AdapterView.performItemClick(AdapterView.java:292) 在android.widget.AbsListView.performItemClick(AbsListView.java:1181) 在android.widget.AbsListView $ PerformClick.run(AbsListView.java:2709) 在android.widget.AbsListView $ 1.run(AbsListView.java:3464)at android.os.Handler.handleCallback(Handler.java:605)at android.os.Handler.dispatchMessage(Handler.java:92)at android.os.Looper.loop(Looper.java:137)at android.app.ActivityThread.main(ActivityThread.java:4511)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:980) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)at dalvik.system.NativeStart.main(原生方法)
虽然我使用的是SDK文档推荐的确切方法,但是为什么会失败的任何想法?
这真让我烦心,因为我不知道是否有其他Android 4设备似乎不符合SDK文档...