首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加镜像附件时出现Gmail错误:'cyk:无法创建本地附件‘

添加镜像附件时出现Gmail错误:'cyk:无法创建本地附件‘
EN

Stack Overflow用户
提问于 2016-09-23 21:06:19
回答 1查看 57关注 0票数 0

即时消息我的应用程序的人可以选择最多6个图像,在应用程序的末尾,我想把这些图像添加到电子邮件到适当的电子邮件地址。

系统可以工作,但当我添加以下内容时:

代码语言:javascript
复制
i.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);

gmail给出这个错误:'cyk:无法创建本地附件‘

经过一些测试后,我发现这是因为并不是所有的图像都在那里,如果我添加所有的图像,它只发送最后一个。

代码如下:

代码语言:javascript
复制
 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:

代码语言:javascript
复制
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)

提前感谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-23 22:19:23

我已经修复了应用程序,如果你也遇到了这个问题,这里是修复:

代码语言:javascript
复制
public void SendButtonDown(View v){
    Intent intent = getIntent();

    List<String> filePaths = new ArrayList<>();
    if(MAIL_IMAGES != null) {
        filePaths.add(MAIL_IMAGES);
    }
    if(MAIL_IMAGES2 != null) {
        filePaths.add(MAIL_IMAGES2);
    }
    if(MAIL_IMAGES3 != null) {
        filePaths.add(MAIL_IMAGES3);
    }
    if(MAIL_IMAGES4 != null) {
        filePaths.add(MAIL_IMAGES4);
    }
    if(MAIL_IMAGES5 != null) {
        filePaths.add(MAIL_IMAGES5);
    }
    if(MAIL_IMAGES6 != null) {
        filePaths.add(MAIL_IMAGES6);
    }

    final Intent i = new Intent(Intent.ACTION_SEND_MULTIPLE);
    i.setType("text/plain");
    i.putExtra(Intent.EXTRA_EMAIL   , new String[]{"testmail@gmail.com"});
    i.putExtra(Intent.EXTRA_SUBJECT , "subject");
    i.putExtra(Intent.EXTRA_TEXT    , data);

    ArrayList<Uri> uris = new ArrayList<>();

    for (String file : filePaths){
        File fileIn = new File(file);
        Uri u = Uri.fromFile(fileIn);
        uris.add(u);
    }
    i.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
    i.putExtra(Intent.EXTRA_STREAM, uris);
    startActivity(Intent.createChooser(i, "Send mail..."));

    finish();
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39661559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档