无法在android中附加文件

Posted

技术标签:

【中文标题】无法在android中附加文件【英文标题】:Unable to attach file in android 【发布时间】:2013-06-19 01:16:00 【问题描述】:

我想在邮件中附加文件....问题是我想使用 ACTION_SENDTO 。当我发送没有附件的邮件时它工作正常但是当我尝试附加文件时它给出了一个例外( android.content.ActivityNotFoundException) 就像下面的链接: How to launch email intent with an attached image

我尝试了上面所说的答案,但没有解决。 这是我的代码

Uri mail= Uri.fromParts("mailto",message, null);                                
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, mail);                
emailIntent.putExtra(Intent.EXTRA_SUBJECT, sub);
emailIntent.putExtra(Intent.EXTRA_TEXT, mailcontent);               
emailIntent.setData(Uri.parse("file://" + Environment.getExternalStorageDirectory()+"/ab.jpg"));
emailIntent.setType("image/jpg"); 
startActivity(emailIntent);

【问题讨论】:

【参考方案1】:

请使用Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);emailIntent .putExtra(Intent.EXTRA_STREAM, uri);

【讨论】:

No.... 我只想使用 ACTION_SENDTO,因为我想过滤掉 15 个以上显示为 ACTION_SEND 的应用程序...可以说使用 settype("message/rfc822") 哪个过滤掉大部分,但仍然会弹出一些应用程序,如 Skype 【参考方案2】:

需要使用EXTRA_STREAM

        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

        Uri outputFileUri = Uri.fromFile( file );
        emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, outputFileUri);

【讨论】:

@user850688-我想当我说“我想使用 ACTION_SENDTO”时,这显然意味着我不需要 ACTION_SEND 的答案【参考方案3】:

试试这个:

    private static final String MESSAGE_RFC822 = "message/rfc822";
    private static final String SELECT_EMAIL_APPLICATION = "Select email application.";

    public static void sendEmail(Context theContext, final String title, final String[] emails, final String theSubject, final String theBody,
        final File file) throws ActivityNotFoundException

    final Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType(MESSAGE_RFC822);
    intent.putExtra(Intent.EXTRA_EMAIL, emails);
    intent.putExtra(Intent.EXTRA_SUBJECT, theSubject);
    intent.putExtra(Intent.EXTRA_TEXT, theBody);
    if (file != null) 
        intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
    

    theContext.startActivity(Intent.createChooser(intent, SELECT_EMAIL_APPLICATION));

【讨论】:

正如我所说,我只想使用 ACTION_SENDTO,因为即使在将 mime 类型指定为“message/rfc822”之后,Skype 等应用程序也会响应我不想要的 Intent 调用...跨度>

以上是关于无法在android中附加文件的主要内容,如果未能解决你的问题,请参考以下文章

Android 如何发送多个联系人附加在单个 .vcf 文件中并发送到邮件?

如何将图像从 Android 中的 Drawable 附加到彩信?

无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException

从 Qt Creator 附加到 Android 进程

如何在 Android 中播放附加到(IP 语音)语音邮件文件的 .wav 文件? [复制]

Android - 无法使用 FileProvider 添加电子邮件附件