0

我从这样的意图收到了一个文件:

Uri incoming = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
File toStream = new File(incoming.getPath());

我无法从中读取,并且 toStream.canRead() 返回 false。

我从图库应用程序中的共享按钮收到此文件,其他应用程序似乎可以正常接收此文件。有任何想法吗?

4

3 回答 3

1

我有同样的问题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);
} 
于 2016-10-22T19:17:26.830 回答
0

尝试为您的应用添加权限READ_EXTERNAL_STORAGE

于 2013-08-02T07:55:36.633 回答
0

SDK 23+ 中有一个新问题,即使您在清单中修复了它,也可能导致您的读/写失败。即使您在尝试读/写时第一次遇到它,也会在权限下讨论它。 链接到讨论它的线程

于 2016-03-08T10:09:46.687 回答