我的应用程序的重点是:创建一个PDF文件,并在Whatsapp,Messenger,Gmail和其他人分享...但我试图共享该文件(它保存在 / storage / emulated / 0 / ),但我在toast上为我返回错误:"无法附加空文件。"。分享方法的代码如下:
MainActivity.java
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("*/*");
i.putExtra(Intent.EXTRA_TEXT, "NOME: ".concat(String.valueOf(Hawk.get("register_name"))));
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
i.putExtra(Intent.EXTRA_SUBJECT, String.valueOf(Hawk.get("register_name")).concat(" Business Card"));
i.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this, "test.com.br.businesscard.provider", new File(getExternalFilesDir(null), "business.pdf")));
startActivity(Intent.createChooser(i, "Sending e-mail..."));
provider_paths.xml
<paths>
<external-path
name="external_files"
path="." />
</paths>
答案 0 :(得分:2)
对于/storage/emulated/0
中的直接文件,构建File
的方法是:
new File(Environment.getExternalStorageDirectory(), ...)
其中...
是文件的文件名(例如"business.pdf"
)。
getExternalFilesDir(null)
适用于/storage/emulated/0/Android/data/.../
等位置的文件,其中...
是您的应用程序ID。
事实证明,您的FileProvider
配置会处理任一位置。但是,FileProvider
无法使用指向不存在的文件的File
对象来提供内容,这就是您遇到问题的原因。