我有一个应用程序可以让用户在他的设备的默认日历中插入一个事件
我正在使用以下代码开始将事件插入默认日历的活动:
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 及更高版本中执行此操作的正确且推荐的方法。
这在我的带有 Android 4.0.3 的旧三星 Galaxy S(旧三星 Galaxy S 的 TEAMSGS 准系统 ICS 自定义 ROM)中运行良好。
但是,在将朋友的三星 Galaxy S2 更新到 Samsung Stock Android 4.0.4 后,这段代码会导致 ActivityNotFound Exception:
android.content.ActivityNotFoundException:在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1535) 上找不到处理 Intent { act=android.intent.action.INSERT dat=content:xxxxx (has extras) } 的活动。 app.Instrumentation.execStartActivity(Instrumentation.java:1387) 在 android.app.Activity.startActivityForResult(Activity.java:3195) 在 android.app.Activity.startActivity(Activity.java:3302) 在 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) 在 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) 在 android.os.Handler.handleCallback(Handler.java:605) 在android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4511) 在 java.lang.reflect 。方法。在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 在 com.android.internal 的 java.lang.reflect.Method.invoke(Method.java:511) 的 invokeNative(Native Method)。 os.ZygoteInit.main(ZygoteInit.java:747) 在 dalvik.system.NativeStart.main(Native Method)
尽管我使用的是 SDK 文档推荐的确切方式,但有什么想法会失败吗?
这真的让我很困扰,因为我不知道是否还有其他似乎不符合 SDK 文档的 Android 4 设备......