美文网首页
Android10文件读写适配

Android10文件读写适配

作者: 紫鹰 | 来源:发表于2021-04-20 14:59 被阅读0次

android10,读写sd卡文件时报错,java.io.FileNotFoundException: /storage/emulated/0/xxx.txt。当时确认已经申请动态权限且权限已经获取到。实际上是Android10 采取了更严格的文件读写设置造成的。解决方法如下。

manifest 配置,增加android.permission.MOUNT_UNMOUNT_FILESYSTEMS权限,application增加android:requestLegacyExternalStorage="true"配置

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx"
xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission
    android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
    tools:ignore="ProtectedPermissions" />

    <application
    ...        
    android:requestLegacyExternalStorage="true"
    >
 
    </application>

</manifest>

获取动态权限,不再赘述
基地址获取方式appContext!!.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)!!.getPath()取代Environment.getExternalStorageDirectory()

    /**
     * 文件存储地址,获取基地址方式
     */
    fun getDeviceIdFile(): File? {
        var sdcardPath: String = MoaApplication.appContext!!.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)!!.getPath()

        if (!sdcardPath.isNullOrEmpty()) {
            val dir = File(sdcardPath + "/xxx")
            dir.mkdirs()
            var file = File(dir.path, ".xxx.txt")
            return file
        }
        return null
    }

相关文章

网友评论

      本文标题:Android10文件读写适配

      本文链接:https://www.haomeiwen.com/subject/abdnlltx.html