【问题标题】:Can't access external storage in API-29无法访问 API-29 中的外部存储
【发布时间】:2020-06-09 12:32:48
【问题描述】:

以下代码在较低的 API-29 中运行良好。但是在使用 API-29 时,它会拒绝访问外部存储错误。

public void persistFile(byte[] bytes, String path, String fileName) throws IOException {
    OutputStream fOut = null;
    File picDirectory = new File(path);
    File file = new File(path, fileName); 
    fOut = new FileOutputStream(file);
    fOut.write(bytes); 
    fOut.flush();  
    fOut.close();  
}

AndroidManifest.xml

<manifest>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

【问题讨论】:

    标签: java android permissions android-permissions android-api-levels


    【解决方案1】:

    在 Android 10 上,您的应用私有目录之外的文件路径默认没有价值,您可以暂时启用 requestLegacyExternalStorage 直到 Android 11(现已推出预览版)

    https://developer.android.com/training/data-storage

    今后最好只使用媒体存储或存储访问框架

    https://developer.android.com/training/data-storage/shared

    【讨论】:

      【解决方案2】:

      在清单应用标签中添加android:requestLegacyExternalStorage="true"

      <manifest ... >
        <!-- This attribute is "false" by default on apps targeting
             Android 10 or higher. -->
        <application android:requestLegacyExternalStorage="true" ... >
          ...
        </application>
      </manifest>
      

      【讨论】:

      猜你喜欢
      • 2020-12-29
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多