“No Activity found to handle Intent” while emailin

2019-02-05 17:59发布

问题:

I am trying to mail data using this code:

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);

        }
    });

But it throws the following error:

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)

Please help me.

回答1:

I tested this on my device, and the code works perfectly. And I testet this code on an emulator, too, and it crashed. The problem is that the OS didn't find any activities which can handle this ACTION_SEND. Surround this kind of code all the time with a try/catch, since you can not be sure if there exists such an activity that can handle your intent. And try to install at least one app that can handle the ACTION_SEND, then try again, and see if it works for you.



回答2:

Call the StartActivity method in the following way:

    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: "));

If System do not find any eamil application, A nice Dialog will be shown:


I know that i am answering an old question, but maybe it can help someone.



回答3:

try to use this for better practice showing a message to the user to setup a mail application.

try{

// you email code here

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


回答4:

Yes problem was in emulator because it was not configured any email in emulator, if any one find this problem please configure email in your emulator, to do this

select email from application menu and follow the steps.



回答5:

There's another subtle cause for this exception to occur.

My app sends an email in two different conditions. One condition I set the To: field - it required Intent.ACTION_SENDTO

But Intent.ACTION_SENDTO causes the described exeption in my other condition where To: is not supplied. In that condition Intent.ACTION_SEND was required.