Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从外部存储器读取硬编码Uri_Java_Android - Fatal编程技术网

Java 从外部存储器读取硬编码Uri

Java 从外部存储器读取硬编码Uri,java,android,Java,Android,我试图从外部存储器中读取json文件,但没有成功。我得到了一个错误: Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{bfaa1d6 26301:com.plm.valdecillasurdemo/u0a284} (pid=26301, uid=10284) requires that you obtain access using

我试图从外部存储器中读取json文件,但没有成功。我得到了一个错误:

Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{bfaa1d6 26301:com.plm.valdecillasurdemo/u0a284} (pid=26301, uid=10284) requires that you obtain access using ACTION_OPEN_DOCUMENT or related API
  • 我的manifest.xml文件正常
  • 我正在运行时中检查“读取外部存储”权限,并且仅在授予该权限时读取该文件
  • 当我尝试读取文件时,我发现了相关的错误
  • 在第二种方法中,我启动了一个ACTION\u OPEN\u文档意图

    系统对话框要求我选择一个文件,一切正常。我正确地读取了文件,但是我不想被询问Uri。我的Uri是硬编码的

    我知道解决这个问题一定很容易,但这个问题让我抓狂……我怎么解决这个问题呢

    提前谢谢

    我的Uri是硬编码的

    这是不可能的。您没有对此类文档的权限,即使
    Uri
    有效(因为
    DocumentsProvider
    没有做任何工作来授予它,所以它将无效)。除此之外,用户可能在您硬编码的位置没有文档

    我如何解决这个问题

    使用
    ACTION\u OPEN\u DOCUMENT
    并允许用户选择要删除的文档

    或者,使用可以跨操作系统版本读写的文件系统位置,主要是在
    上下文中定义的文件系统位置:
    getFilesDir()
    getCacheDir()
    getExternalFilesDir()
    getExternalCacheDir()
    ,等等。在这种情况下,您将不需要使用
    Uri
    值。

    您是否尝试过该方法?