Android 10 无法读取本地文件 FileNotFoundException: Permission denied 解决办法

时间:2025-01-28 07:02:52

      最近在做本地媒体处理,偶然发现 android10 以下可以正常读取本地视频文件,android 10 却提示 Permission denied 于是翻阅官方文档,忙活半天终于找到了原因!

相关链接:Android 10 管理分区外部存储访问

解决办法:

在Mainfest Application中加入这一行   android:requestLegacyExternalStorage="true"

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

 

Google官方解释:

警告:明年,主要平台版本将要求所有应用都使用分区存储,无论应用的目标 SDK 级别是多少。因此,您应该提前确保您的应用能够使用分区存储。为此,请确保针对搭载 Android 10(API 级别 29)及更高版本的设备启用了该行为。

在您的应用完全兼容分区存储之前,您可以根据应用的目标 SDK 级别或 requestLegacyExternalStorage 清单属性,暂时选择停用分区存储:

  • 以 Android 9(API 级别 28)或更低版本为目标平台。
  • 如果以 Android 10 或更高版本为目标平台,请在应用的清单文件中将 requestLegacyExternalStorage 的值设为 true

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

     

注意:如果某个应用在安装时启用了传统外部存储,则该应用会保持此模式,直到卸载为止。无论设备后续是否升级为搭载 Android 10 或更高版本,或者应用后续是否更新为以 Android 10 或更高版本为目标平台,此兼容性行为均适