Android电子邮件意图不将文件作为附件附加

Android电子邮件意图不将文件作为附件附加,android,email,Android,Email,对于我的公司,我正在尝试使用电子邮件意图从我的android应用程序发送电子邮件。 我正在使用emulator测试我的应用程序。但问题是,当我试图添加和附件(如pdf,图像)时,它还不会附加。 这是我的密码: 结果是带有空附件的电子邮件查找屏幕截图:检查您是否在清单和运行时为您的应用程序提供了读取外部存储的权限 然后调用下面的方法sendmail,假设完整的文件路径保存在filePath中 File root = Environment.getExternalStorageDirectory

对于我的公司,我正在尝试使用电子邮件意图从我的android应用程序发送电子邮件。 我正在使用emulator测试我的应用程序。但问题是,当我试图添加和附件(如pdf,图像)时,它还不会附加。 这是我的密码:


结果是带有空附件的电子邮件查找屏幕截图:

检查您是否在清单和运行时为您的应用程序提供了读取外部存储的权限

然后调用下面的方法sendmail,假设完整的文件路径保存在filePath中

  File root = Environment.getExternalStorageDirectory();
  String pathToMyAttachedFile = "DirName/"+filename;
  File filePath = new File(root, pathToMyAttachedFile)
  sendEmailAlert(filePath,subject,text);
调用的方法

 private void sendEmailAlert(File fileName,String subject,String text) {

    final File file=fileName;

                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.setType("application/octet-stream"); /* or use intent.setType("message/rfc822); */
                    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                    intent.putExtra(Intent.EXTRA_TEXT, text);
                    if (!file.exists() || !file.canRead()) {
                        Toast.makeText(getContext(), "Attachment Error", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    Uri uri = Uri.fromFile(file);
                    intent.putExtra(Intent.EXTRA_STREAM, uri);
                    startActivity(Intent.createChooser(intent, "Send email..."));

}

@blue dream可能重复:请尝试以下代码是的,我将在清单和登录期间(启动活动)提供完全权限,并使用ActivityCompat.requestPermissions(LoginActivity.this,新字符串[]{manifest.permission.READ_EXTERNAL_STORAGE},1)。无论如何,谢谢你的回复。你试过我的代码了吗?这段代码在我上个星期的项目中成功实现了。我还用相机拍摄了附件图像,所以我认为这没问题。因为我正在目录中获取图像文件。此外,我正在尝试为此只使用选定的电子邮件客户端,因此我忽略了intent Chooser是的,这是有效的,但如果我只想选择gmail或outlook,我该怎么办?我已在代码中添加了更改。检查一下。使用
intent.setType()
 private void sendEmailAlert(File fileName,String subject,String text) {

    final File file=fileName;

                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.setType("application/octet-stream"); /* or use intent.setType("message/rfc822); */
                    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                    intent.putExtra(Intent.EXTRA_TEXT, text);
                    if (!file.exists() || !file.canRead()) {
                        Toast.makeText(getContext(), "Attachment Error", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    Uri uri = Uri.fromFile(file);
                    intent.putExtra(Intent.EXTRA_STREAM, uri);
                    startActivity(Intent.createChooser(intent, "Send email..."));

}