Android将文件附加到GMAIL – 无法附加空文件

我有一个程序总是将相同的文件附加到GMAIL(撰写>附加文件>打开>“MyProgram”)。 它总会select相同的文件。

它在做什么是:

String path = Environment.getExternalStorageDirectory() + "/file.3gp"; File f = new File(path); Uri data = Uri.fromFile(f); Intent i = new Intent(); i.setData(data); setResult(Activity.RESULT_OK, i); finish(); 

这是工作正常,直到Android 6.0。 现在,尝试使用它时收到以下错误:

不能附加空文件

天文文件共享给了我相同的错误(可以是一个旧版本)。

不过,我安装了ES文件资源pipe理器,当我做同样的例程,并select文件,我收到一个对话框,说:

拿起文件为

  • 普通Android方式(适用于MMS,Gmail,…)
  • 文件的方式(如果以上尝试这个失败)

“文件的方式”将失败,因为我的程序。 “正常Android的方式”将正常工作。

有没有人有什么想法,所以我可以复制?

提前致谢!

OBS:很多时候已经尝试过putExtra(STREAM,path),但没有成功。

Solutions Collecting From Web of "Android将文件附加到GMAIL – 无法附加空文件"

看到下面的问题:

Android的6-不能共享,文件,再

此行为适用于Android 6.0和Gmail。 请看下面的线程。

问题3141 – android-developer-preview

如果您转到设置 – >应用程序 – > Gmail – >权限,并手动启用“存储”权限,则共享工作。

在这种情况下,Gmail应该要求提供“存储”权限,并且会像以前的所有Android版本一样工作。

其他电子邮件应用程序应正确处理附件。

好吧,经过大量的研究和拦截一些意图,现在就开始工作。

我必须做的是改变文件:/ / /内容:/ /。

我从Android下面的这个信息: https : //developer.android.com/reference/android/support/v4/content/FileProvider.html

唯一的主要变化是我使用硬编码的path/sdcard/file.ext。 另外,线路

 getUriForFile(getContext(), "com.mydomain.fileprovider", newFile); 

被改为

 Uri contentUri = FileProvider.getUriForFile(this, "com.mydomain.fileprovider", newFile); 

还必须包括:

 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); i.setData(contentUri); 

我不明白为什么我必须从文件更改为内容 ,但在此之后,该文件现在再次被附加! 如果您遇到此问题,请参阅链接,不要忘记需要创build的新.xml文件。

这是如何解决它。

转到设置 – >应用程序 – > Gmail – >权限打开“存储”的权限解决这个问题对我来说。

我无法find一个明确的答案(在没有SD卡的Gmail上发送附件)我试图复制到另一个文件名,但没有雪茄。 我得到它的工作方式是复制到下载文件夹,并从那里去。

使用此Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)获取下载path

拉完整的pathdownlaods文件夹复制attachemnt到那里,我们是好的。 超过20M的文件不会去