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

    技术2022-07-11  89

          最近在做本地媒体处理,偶然发现 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 或更高版本为目标平台,此兼容性行为均适

    Processed: 0.012, SQL: 9