Kur*_*s92 2 email gmail android send email-attachments
我正在尝试从我的应用程序发送一封带有附件的电子邮件。当选择器弹出时,如果我点击 GMail,GMail 就会崩溃;如果我点击设备的默认电子邮件客户端,它就会完美运行。附件是从外部 SD 中获取的 jpeg。
这里是代码:
filelocation = gv.getPath();\n Intent emailIntent = new Intent(Intent.ACTION_SEND);\n // set the type to \'email\'\n emailIntent.setType("image/jpeg");\n String to[] = {"myemailaddress@gmail.com"};\n emailIntent.putExtra(Intent.EXTRA_EMAIL, to);\n // the attachment\n emailIntent.putExtra(Intent.EXTRA_STREAM, filelocation);\n // the mail subject\n emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");\n emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");\n emailIntent.setType("message/rfc822");\n startActivity(Intent.createChooser(emailIntent, "Send email using:"));\nRun Code Online (Sandbox Code Playgroud)\n\n这里是日志猫:
\n\n03-14 19:03:26.081 27428-27428/com.android.myapp W/Bundle\xef\xb9\x95 Key android.intent.extra.STREAM expected Parcelable but value was a java.lang.String. The default value <null> was returned.\n03-14 19:03:26.111 27428-27428/com.android.myapp W/Bundle\xef\xb9\x95 Attempt to cast generated internal exception:\n java.lang.ClassCastException: java.lang.String cannot be cast to android.os.Parcelable\n at android.os.Bundle.getParcelable(Bundle.java:1171)\n at android.content.Intent.getParcelableExtra(Intent.java:4493)\n at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7032)\n at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7017)\n at android.app.Instrumentation.execStartActivity(Instrumentation.java:1548)\n at android.app.Activity.startActivityForResult(Activity.java:3409)\n at android.app.Activity.startActivityForResult(Activity.java:3370)\n at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:826)\n at android.support.v4.app.Fragment.startActivity(Fragment.java:896)\n at com.android.myapp.steps.Passo3$2.onClick(Passo3.java:100)\n at android.view.View.performClick(View.java:4107)\n at android.view.View$PerformClick.run(View.java:17160)\n at android.os.Handler.handleCallback(Handler.java:615)\n at android.os.Handler.dispatchMessage(Handler.java:92)\n at android.os.Looper.loop(Looper.java:155)\n at android.app.ActivityThread.main(ActivityThread.java:5536)\n at java.lang.reflect.Method.invokeNative(Native Method)\n at java.lang.reflect.Method.invoke(Method.java:511)\n at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)\n at dalvik.system.NativeStart.main(Native Method)\nRun Code Online (Sandbox Code Playgroud)\n\n有什么建议吗?我们将非常感谢您的每一次帮助!:)
\n这行:
emailIntent.putExtra(Intent.EXTRA_STREAM, filelocation);
Run Code Online (Sandbox Code Playgroud)
需要 URI 才能工作。改成:
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(filelocation));
Run Code Online (Sandbox Code Playgroud)