[英]Android canRead() returns false
我收到了这样的意图文件:
Uri incoming = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
File toStream = new File(incoming.getPath());
我无法读取它,并且toStream.canRead()返回false。
我是从“图库”应用程序中的“共享”按钮收到的,其他应用程序似乎都可以接收到此文件。 有任何想法吗?
我在Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
遇到了同样的问题Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
。 返回的路径类似于“ / document / primary:Download / ac ”。 当我使用该路径创建File对象时,它显示的exists()
canRead()
和canRead()
为false
。 我所做的是,走“ : ”之后的路径,即“ Download / ac ”,然后将其与“ / storage / emulated / 0 / ”合并。 因此,最终路径为“ / storage / emulated / 0 / Download / ac ”。 与内部存储一起正常工作。
在仅许可问题的情况下,请使用此功能。
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+中存在一个具有权限的新问题,即使您在清单中对其进行了修复,也可能导致读/写失败。 即使您在尝试读/写时第一次遇到它,也会在权限下进行讨论。 链接到讨论它的线程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.