繁体   English   中英

Android canRead()返回false

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM