未找到处理意图的活动
Posted
技术标签:
【中文标题】未找到处理意图的活动【英文标题】:activity not found to handle intent 【发布时间】:2011-05-15 05:08:09 【问题描述】:我的意图有问题。当我选择意图时,我的应用程序似乎崩溃了。由于堆栈跟踪,我找到了错误代码行。但我找不到它有什么问题。希望任何人都可以帮助我。
这是第 121 行的 java 代码: startActivity(new Intent(Intent.ACTION_INSERT, getIntent().getData()));
这是堆栈跟踪:
11-24 16:09:24.634: ERROR/androidRuntime(222): Uncaught handler: thread main exiting due to uncaught exception
11-24 16:09:24.834: ERROR/AndroidRuntime(222): android.content.ActivityNotFoundException: No Activity found to handle Intent act=android.intent.action.INSERT dat=content://joel.google.provider.TemplatePad/templates
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.app.Activity.startActivityForResult(Activity.java:2749)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.app.Activity.startActivity(Activity.java:2855)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at joel.AndroidGroupSMS.TemplatesList.onOptionsItemSelected(TemplatesList.java:121)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.app.Activity.onMenuItemSelected(Activity.java:2170)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:525)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.view.View.onTouchEvent(View.java:4179)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.widget.TextView.onTouchEvent(TextView.java:6541)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.view.View.dispatchTouchEvent(View.java:3709)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.os.Handler.dispatchMessage(Handler.java:99)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.os.Looper.loop(Looper.java:123)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at android.app.ActivityThread.main(ActivityThread.java:4363)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at java.lang.reflect.Method.invokeNative(Native Method)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at java.lang.reflect.Method.invoke(Method.java:521)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-24 16:09:24.834: ERROR/AndroidRuntime(222): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
【参考方案1】:您能否向我们展示您希望与您的implicit intent 匹配的意图过滤器?这部分:
act=android.intent.action.INSERT dat=content://joel.google.provider.TemplatePad/templates
意味着您需要设置一个带有intent filter 的活动来处理对content://joel.google.provider.TemplatePad
-schemed URI 的 INSERT 操作的隐式请求。
【讨论】:
content://joel.google.provider.TemplatePad/templates
URI 的 Content Provider 清单元素是什么?
只需编写 SQLite(或在您的应用程序中调用一个通用类来进行 SQLite 调用,或使用 ORM (***.com/questions/371538/…))。否则,您将以内容提供者语法编写所有数据请求,通过 Intent 将这些请求运行到 ContentProvider,然后将这些请求返回到 SQLite。使用 ContentProviders 的唯一原因是如果您想让 3rd-party 应用程序访问您的数据。它们是一个很棒的功能,但 95% 以上的应用程序不需要它们。
太棒了 - 很高兴听到它。如果您发现我的回答有助于解决您的问题,请将其标记为已接受,我们将不胜感激。【参考方案2】:
您是否已将 Activity
添加到清单中?
您对StartActivity()
的呼叫也被关闭。以下是我熟悉的如何启动一个新的Activity
Intent i = new Intent(this, NextActivity.class);
startActivity(i);
编辑:我注意到您可能没有遇到显式启动Activity
的困难。对不起!
【讨论】:
我遇到了同样的问题 您的示例是一个显式意图(“启动活动 X。”他正在创建一个隐式意图(“启动一个活动来处理这组数据。”)。它们不可互换,假设他实际上想要做的是设置一些代码来处理对特定类型数据的内部或外部请求。 啊,我的错。我还没有使用隐式意图。我应该对它们进行一些研究,看看它们是否符合我当前的一些需求。以上是关于未找到处理意图的活动的主要内容,如果未能解决你的问题,请参考以下文章
未找到处理 Intent 的活动 - android.intent.action.OPEN_DOCUMENT
如果不使用通知或按钮单击未从某些待处理的意图打开应用程序,是不是可以调用活动?