“无活动来处理意图”,同时通过电子邮件发送数据(“No Activity found to hand

2019-06-26 08:41发布

我想使用此代码的邮件数据:

email = (Button) findViewById(R.id.enail);
    email.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent emailIntent = new Intent(
                    android.content.Intent.ACTION_SEND);
            emailIntent.setAction(Intent.ACTION_SEND);
            emailIntent.setType("message/rfc822");
            emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                    new String[] { "" });
            emailIntent.putExtra(android.content.Intent.EXTRA_CC, "");
            emailIntent.putExtra(android.content.Intent.EXTRA_BCC, "");
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                    "Playlist Details");
            emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail));
            emailIntent.setType("text/html");
            startActivity(emailIntent);

        }
    });

但它引发以下错误:

07-17 12:31:33.438: E/AndroidRuntime(498): FATAL EXCEPTION: main
07-17 12:31:33.438: E/AndroidRuntime(498): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND (has extras) }
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Activity.startActivityForResult(Activity.java:2817)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Activity.startActivity(Activity.java:2923)
07-17 12:31:33.438: E/AndroidRuntime(498):  at com.playlist.ViewPlayList$3.onClick(ViewPlayList.java:93)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.view.View.performClick(View.java:2408)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.view.View$PerformClick.run(View.java:8816)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.os.Handler.handleCallback(Handler.java:587)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.os.Looper.loop(Looper.java:123)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.ActivityThread.main(ActivityThread.java:4627)
07-17 12:31:33.438: E/AndroidRuntime(498):  at java.lang.reflect.Method.invokeNative(Native Method)
07-17 12:31:33.438: E/AndroidRuntime(498):  at java.lang.reflect.Method.invoke(Method.java:521)
07-17 12:31:33.438: E/AndroidRuntime(498):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-17 12:31:33.438: E/AndroidRuntime(498):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-17 12:31:33.438: E/AndroidRuntime(498):  at dalvik.system.NativeStart.main(Native Method)

请帮我。

Answer 1:

我测试了我的设备上,并且代码完美的作品。 我testet这个代码在模拟器上,也和它坠毁。 问题是,在OS没有找到能够处理这个任何活动ACTION_SEND 。 围绕这种代码的所有时间用try/catch ,因为你不能确定是否存在可以处理你的意图这样的活动。 并尝试至少安装一个应用程序,可以处理ACTION_SEND ,然后再试一次,看看它是否适合你。



Answer 2:

调用StartActivity通过以下方式方法:

    Intent emailIntent = new Intent(
                        android.content.Intent.ACTION_SEND);
                emailIntent.setAction(Intent.ACTION_SEND);
                emailIntent.setType("message/rfc822");
                emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                        new String[] { "" });
                emailIntent.putExtra(android.content.Intent.EXTRA_CC, "");
                emailIntent.putExtra(android.content.Intent.EXTRA_BCC, "");
                emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                        "Playlist Details");
                emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail));
                emailIntent.setType("text/html");

// FOLLOWING STATEMENT CHECKS WHETHER THERE IS ANY APP THAT CAN HANDLE OUR EMAIL INTENT 
startActivity(Intent.createChooser(emailIntent,
                        "Send Email Using: "));

如果系统没有找到任何EAMIL应用程序,一个漂亮的对话框将显示:


我知道我是在回答一个老问题,但也许它可以帮助别人。



Answer 3:

尝试使用这个用于显示信息给用户安装一个邮件应用程序更好的做法。

try{

// you email code here

} catch (ActivityNotFoundException e) {
// show message to user
}


Answer 4:

还有一个微妙的原因出现此异常。

我的应用程序在两个不同的条件下发送电子邮件。 一个条件我设置:字段 - 它需要Intent.ACTION_SENDTO

但Intent.ACTION_SENDTO导致我的其他条件所描述的exeption哪里:不提供。 在这种条件下Intent.ACTION_SEND被要求。



Answer 5:

是的问题是在仿真器,因为它没有配置任何模拟器电子邮件,如果任何人发现这个问题,请配置电子邮件在你的模拟器,要做到这一点

选择应用程序菜单中的电子邮件,并按照步骤。



文章来源: “No Activity found to handle Intent” while emailing data