我从这样的意图收到了一个文件:
Uri incoming = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
File toStream = new File(incoming.getPath());
我无法从中读取,并且 toStream.canRead() 返回 false。
我从图库应用程序中的共享按钮收到此文件,其他应用程序似乎可以正常接收此文件。有任何想法吗?
我有同样的问题Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
。返回的路径类似于“ /document/primary:Download/ac ”。当我使用该路径创建 File 对象时,它显示exists()
为. 我所做的是,走“ : ”之后的路径,即“ Download/ac ”并将其与“ /storage/emulated/0/ ”合并。所以最终路径是“ /storage/emulated/0/Download/ac ”。与内部存储配合良好。canRead()
false
如果只有权限问题,请使用此功能。
ActivityCompat.requestPermissions(MainActivity.this, new String[]{READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE},THIS_REQUEST_CODE);
并覆盖这个
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
尝试为您的应用添加权限READ_EXTERNAL_STORAGE
SDK 23+ 中有一个新问题,即使您在清单中修复了它,也可能导致您的读/写失败。即使您在尝试读/写时第一次遇到它,也会在权限下讨论它。 链接到讨论它的线程