7

我正在尝试通过电子邮件将通过我的应用程序单击的图片作为附件发送。点击图片,我得到了正确的路径,但应用程序抛出了一个运行时异常......“没有找到处理 Intent 的活动”。我正在我的设备上对此进行测试,并配置了我的 gmail 帐户。我不知道如何解决这个问题。请帮忙。

这是我的代码:

public static void sendEmail(Context context, String[] recipientList, String title, String subject, String body) {

Intent intent = new Intent(Intent.ACTION_SENDTO,    Uri.parse("mailto:someone@example.com"));
        intent.setType("plain/text");
        intent.putExtra(android.content.Intent.EXTRA_EMAIL, recipientList);
        intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
        intent.putExtra(android.content.Intent.EXTRA_TEXT, body);
        intent.putExtra(Intent.EXTRA_STREAM, capturedImageFilePath);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

}

这是日志:

01-15 11:26:04.455: E/AndroidRuntime(9904): FATAL EXCEPTION: main
01-15 11:26:04.455: E/AndroidRuntime(9904): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=plain/text flg=0x10000000 (has extras) }
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.app.ContextImpl.startActivity(ContextImpl.java:852)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at com.example.attachmail.AttchmentActivity.sendEmail(AttchmentActivity.java:133)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at com.example.attachmail.AttchmentActivity$2.onClick(AttchmentActivity.java:93)
4

5 回答 5

11

我有一个类似的问题,我已经传递了一个函数的参数,该函数有目的地发送电子邮件。但是我注意到我需要使用intent.setData(Uri uri)行,如果电子邮件参数只是电子邮件,那么它需要使用“mailto:”文本示例:

intent.setData(Uri.parse("mailto:"+email));

像这儿:

Intent intent = new Intent(Intent.ACTION_SENDTO);
                    intent.setType("message/rfc822");
                    intent.putExtra(Intent.EXTRA_EMAIL, email);
                    intent.setData(Uri.parse("mailto:"+email));
                    intent.putExtra(Intent.EXTRA_SUBJECT, emailSubject);
                    intent.putExtra(Intent.EXTRA_TEXT, emailContent);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
                try {

                    startActivity(intent);
                } catch (android.content.ActivityNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.d("Email error:",e.toString());
                }

如果您在模拟器上进行测试,则可能存在未配置“共享”应用程序的问题,因此请确保在模拟器上进行设置或在实际设备上进行测试。

于 2014-02-09T15:18:09.127 回答
1

将 Intent.ACTION_SENDTO 更改为 Intent.ACTION_SEND。我不想要像蓝牙这样的其他发送选项,这就是我写发送到..但无法让它工作的原因。所以最后把它改成发送,现在它工作得很好。不知道到底是什么问题。

于 2013-01-17T06:21:58.423 回答
1

尝试以下代码发送电子邮件。

                   Intent sendIntent = new Intent(Intent.ACTION_SEND);

                    sendIntent.setType("message/rfc822");
                    sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
                   sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(path));

                   sendIntent.putExtra(Intent.EXTRA_TEXT, body);
                   startActivity(Intent.createChooser(sendIntent, "Email:")) 
于 2013-01-15T06:11:38.643 回答
0

只需从您的代码中删除此行

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

& 然后再试一次。

于 2013-01-15T06:18:26.727 回答
0

我认为您面临的问题是因为您设置的 MIME 类型是“纯/文本”以及您设置的 FLAG ieFLAG ACTIVITY NEW TASK。

这里有一些可以帮助你的东西。试试这个链接或这个链接。

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
//        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailSignature);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, toSenders);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subjectText);
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, messageText+"\n\n"+emailSignature); 

        emailIntent.setType("image/jpeg");
        File bitmapFile = new File(Environment.getExternalStorageDirectory()+
            "/"+FOLDER_NAME+"/picture.jpg");
        myUri = Uri.fromFile(bitmapFile);
        emailIntent.putExtra(Intent.EXTRA_STREAM, myUri);
于 2013-01-15T06:13:16.297 回答