Android 4.0.4版本的SGS 2上的Android.content.ActivityNotFoundException

Android 4.0.4版本的SGS 2上的Android.content.ActivityNotFoundException,android,android-intent,calendar,Android,Android Intent,Calendar,我有一个应用程序,允许用户在其设备的默认日历中插入事件 我正在启动活动,以使用以下代码将事件插入默认日历: Intent intent = new Intent(Intent.ACTION_INSERT) .setData(Events.CONTENT_URI) .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())

我有一个应用程序,允许用户在其设备的默认日历中插入事件

我正在启动活动,以使用以下代码将事件插入默认日历:

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);
根据位于的SDK文档,在Android 4及更高版本中,这是正确且推荐的方法

这在我的旧三星Galaxy S和Android 4.0.3(TEAMSGS为旧三星Galaxy S定制的裸骨ICS ROM)中运行良好

但是,在将朋友的三星Galaxy S2更新为三星股票Android 4.0.4后,此代码将导致ActivityNotFound异常:

android.content.ActivityNotFoundException:未找到要处理的活动 Intent{act=android.Intent.action.INSERT dat=content:xxxxx(已 额外费用)}at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1535) 在 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.menuitemmpl.invoke(menuitemmpl.java:149) 在 com.android.internal.view.menu.MenuBuilder.performitemation(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)中 handleCallback(Handler.java:605)位于 dispatchMessage(Handler.java:92)位于 Looper.loop(Looper.java:137)位于 android.app.ActivityThread.main(ActivityThread.java:4511)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 java.lang.reflect.Method.invoke(Method.java:511)位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) dalvik.system.NativeStart.main(本机方法)

尽管我使用的是SDK文档推荐的确切方法,但您知道为什么会失败吗


这真的很困扰我,因为我不知道是否还有其他Android 4设备似乎不符合SDK文档

您是否尝试过其他没有自定义UI的设备?Google Calendar现在是一款脱离Google框架的应用程序,它位于Play商店中,您可以先尝试在S2上安装它。我假设Stock Calendar应用程序安装在所有Android发行版上,因此该代码应始终适用于所有设备?不管怎样,如果三星正在为Android提供其定制的日历应用程序,这可能确实需要一个不同的意图?类似地,用户可以安装不同的SMS应用程序,但如果没有根设备,则无法删除库存SMS应用程序?我的目标是在所有设备上运行的代码(以避免Android版本碎片化),它们可能使用不同的意图。因为你的Galaxy S(在没有TouchWiz UI的第三方ROM上运行,我想?)运行正常,但对于S2,android找不到活动。那么,为了缩小问题的范围,你能在其他纯安卓设备上试用这段代码吗?@ss1271:不幸的是,我没有访问任何其他安卓4+设备的权限。解决方法可能是,使用隐式意图,而不是显式意图。但我不知道要使用哪个意图/意图过滤器?