【发布时间】:2016-09-23 13:06:19
【问题描述】:
在我的应用程序中,人们最多可以选择 6 张图像,在应用程序结束时,我想将这些图像添加到适当的电子邮件地址的电子邮件中。
系统可以工作,但是当我添加时:
i.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
gmail 给出这个错误:'cyk: Failed to create local attachment'
经过一些测试,我发现这是由于并非所有图像都始终存在, 如果我添加所有图像,它只会发送最后一张。
代码如下:
public void SendButtonDown(View v){
Intent intent = getIntent();
Uri MAIL_IMAGES_URI = Uri.parse("file://"+MAIL_IMAGES);
Uri MAIL_IMAGES_URI2 = Uri.parse("file://"+MAIL_IMAGES2);
Uri MAIL_IMAGES_URI3 = Uri.parse("file://"+MAIL_IMAGES3);
Uri MAIL_IMAGES_URI4 = Uri.parse("file://"+MAIL_IMAGES4);
Uri MAIL_IMAGES_URI5 = Uri.parse("file://"+MAIL_IMAGES5);
Uri MAIL_IMAGES_URI6 = Uri.parse("file://"+MAIL_IMAGES6);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"testmail@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT , "Subject");
i.putExtra(Intent.EXTRA_TEXT , textVar);
i.setType("application/image");
i.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
i.putExtra(Intent.EXTRA_STREAM , MAIL_IMAGES_URI);
i.putExtra(Intent.EXTRA_STREAM , MAIL_IMAGES_URI2);
i.putExtra(Intent.EXTRA_STREAM , MAIL_IMAGES_URI3);
i.putExtra(Intent.EXTRA_STREAM , MAIL_IMAGES_URI4);
i.putExtra(Intent.EXTRA_STREAM , MAIL_IMAGES_URI5);
i.putExtra(Intent.EXTRA_STREAM , MAIL_IMAGES_URI6);
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex){
Toast.makeText(AanbiedenStap3.this, "no email installed",
Toast.LENGTH_SHORT).show();
}
finish();
}
}
这是完整的 Logcat:
09-23 15:16:44.065 11793-11793/? E/Gmail: Error adding attachment
cyk: Failed to create local attachment
at cyl.a(SourceFile:344)
at cfe.a(SourceFile:3353)
at cfn.run(SourceFile:6191)
at cfe.a(SourceFile:19310)
at cfe.a(SourceFile:1198)
at cfe.C(SourceFile:1307)
at cfe.onCreate(SourceFile:8505)
at com.google.android.gm.ComposeActivityGmail.onCreate(SourceFile:201)
at android.app.Activity.performCreate(Activity.java:6221)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5832)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
提前致谢:)
【问题讨论】:
-
是的,当然它只发送最后一个。你自己重写其他的。
i.putExtra(Intent.EXTRA_STREAM ,.....);只能有一个。 -
那我如何在一封邮件中发送多张图片?
-
附加更多文件必须以不同的方式完成。我想知道你为什么不去谷歌搜索一下是怎么做的。
标签: android android-studio gmail