android.content.ActivityNotFoundException使用Intent

android.content.ActivityNotFoundException使用Intent,android,android-intent,Android,Android Intent,我正在编写一个应用程序,其中我试图发送一封包含一些数据的电子邮件,但每当我点击提交按钮发送电子邮件时,就会收到:不幸的是,应用程序已停止 错误: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND typ=text/plain (has extras) } Intent emailIntent = new Intent(and

我正在编写一个应用程序,其中我试图发送一封包含一些数据的电子邮件,但每当我点击提交按钮发送电子邮件时,就会收到:不幸的是,应用程序已停止

错误:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND typ=text/plain (has extras) }
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("text/plain");
String aEmailList[] = { "myaccount@gmail.com" };  
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);   
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body.toString()));
startActivity(emailIntent);
08-01 08:34:22.518: E/AndroidRuntime(1043): FATAL EXCEPTION: main
08-01 08:34:22.518: E/AndroidRuntime(1043): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=text/plain (has extras) }
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivityForResult(Activity.java:3370)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivityForResult(Activity.java:3331)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivity(Activity.java:3566)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivity(Activity.java:3534)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at app.my.BookAppointmentActivity$6.onClick(BookAppointmentActivity.java:206)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.view.View.performClick(View.java:4204)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.view.View$PerformClick.run(View.java:17355)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Handler.handleCallback(Handler.java:725)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Looper.loop(Looper.java:137)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at java.lang.reflect.Method.invokeNative(Native Method)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at java.lang.reflect.Method.invoke(Method.java:511)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at dalvik.system.NativeStart.main(Native Method)
代码:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND typ=text/plain (has extras) }
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("text/plain");
String aEmailList[] = { "myaccount@gmail.com" };  
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);   
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body.toString()));
startActivity(emailIntent);
08-01 08:34:22.518: E/AndroidRuntime(1043): FATAL EXCEPTION: main
08-01 08:34:22.518: E/AndroidRuntime(1043): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=text/plain (has extras) }
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivityForResult(Activity.java:3370)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivityForResult(Activity.java:3331)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivity(Activity.java:3566)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivity(Activity.java:3534)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at app.my.BookAppointmentActivity$6.onClick(BookAppointmentActivity.java:206)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.view.View.performClick(View.java:4204)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.view.View$PerformClick.run(View.java:17355)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Handler.handleCallback(Handler.java:725)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Looper.loop(Looper.java:137)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at java.lang.reflect.Method.invokeNative(Native Method)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at java.lang.reflect.Method.invoke(Method.java:511)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at dalvik.system.NativeStart.main(Native Method)
Logcat:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND typ=text/plain (has extras) }
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("text/plain");
String aEmailList[] = { "myaccount@gmail.com" };  
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);   
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body.toString()));
startActivity(emailIntent);
08-01 08:34:22.518: E/AndroidRuntime(1043): FATAL EXCEPTION: main
08-01 08:34:22.518: E/AndroidRuntime(1043): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=text/plain (has extras) }
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivityForResult(Activity.java:3370)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivityForResult(Activity.java:3331)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivity(Activity.java:3566)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.Activity.startActivity(Activity.java:3534)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at app.my.BookAppointmentActivity$6.onClick(BookAppointmentActivity.java:206)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.view.View.performClick(View.java:4204)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.view.View$PerformClick.run(View.java:17355)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Handler.handleCallback(Handler.java:725)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.os.Looper.loop(Looper.java:137)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at java.lang.reflect.Method.invokeNative(Native Method)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at java.lang.reflect.Method.invoke(Method.java:511)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-01 08:34:22.518: E/AndroidRuntime(1043):     at dalvik.system.NativeStart.main(Native Method)

Android emulator似乎缺少配置的电子邮件帐户。这就是你的代码崩溃的原因。我建议在尝试发送时捕获ActivityNotFoundException:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("text/plain");
String aEmailList[] = { "myaccount@gmail.com" };  
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);   
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body.toString()));
try{    
  startActivity(emailIntent);
} catch (ActivityNotFoundException ex){
  Toast.makeText(this, "No activity found", Toast.LENGTH_LONG).show(); //Display an error message
}
您可以获得有关此问题的更多信息

特别是这一段很有趣:

如果您使用的是模拟器,则需要配置电子邮件 客户如果未配置电子邮件客户端,它将不会响应 我们将要讨论的意图。如果要在中查看选择器 操作,您将需要使用多个消息来配置设备 应用程序,如Gmail应用程序和电子邮件应用程序


几个月前,我遇到了同样的问题,我找到了一个小的解决方案,请用下面的代码替换你的代码

Intent i = new Intent(Intent.ACTION_SEND);
    i.setType("plain/text");  
    i.putExtra(Intent.EXTRA_EMAIL, new String[]{"recepient@gmail.com"});
    i.putExtra(Intent.EXTRA_SUBJECT, subject);
    i.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body.toString()));
    try {
     startActivity(i);
    } catch (android.content.ActivityNotFoundException ex) {
     Toast.makeText(Activity.this, "There are no email applications installed.", Toast.LENGTH_SHORT).show();
    }
}

如果您将收到没有安装电子邮件应用程序。消息,这意味着您的工作已经完成,我建议您在实际设备上检查它,但我也不知道如何通过EMULATOR发送它,而不是使用Try-Catch-block,您可以在
Intent
对象上使用该方法。如果结果为非空,则至少有一个应用程序可以处理该意图,并且可以安全地调用
startActivity()
。如果结果为空,则不应使用意图,如果可能,应禁用发出意图的功能

您可以使用以下解决方案:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("text/plain");
String aEmailList[] = { "myaccount@gmail.com" };  
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);   
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body.toString()));

// Verify that the intent will resolve to an activity
if (emailIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}else{
    Toast.makeText(this, "No activity found to send mail.", Toast.LENGTH_LONG).show(); 
}
你可以找到更多的细节


我希望这会有所帮助。

在emulator或device中测试?@emulator中的阅读器尽可能在device中测试。我能看到的代码和我的(工作)代码之间的唯一区别是,我没有使用
Html.fromHtml(body.toString())
,而是指定了一个纯文本字符串(试试看),而且我还使用了
startActivity(Intent.createChooser(emailIntent,“发送电子邮件时使用:”);
从您的日志猫中,您似乎正在使用android.Intent.action.SENDTO。该选项要求您通过url方案指定收件人和主题,而android.content.Intent.action_发送(当您在发布的代码中使用它时?!)将这些参数作为额外的信息。请参阅更多信息:打开新的电子邮件,使用空白的电子邮件来处理您的<代码>意图>代码>如何通过上面的文本从模拟器发送电子邮件:<代码>您需要配置电子邮件客户端。如果电子邮件客户端未被配置,它将不会对意图< /代码>作出响应。必须通过模拟器发送电子邮件要在模拟器中配置电子邮件,请使用此链接:-非常感谢…KLAMITSURI先生@KLAMITSURI我不能接受两次回答,我的运气不好,现在很高兴:)