首页 > 解决方案 > Android 在根 sdcard 路径(/sd_card/test/)创建文件夹失败。即使在授予写权限之后

问题描述

我需要在 SD 卡路径中创建一个文件夹。即使在授予写权限之后。它不工作。我得到了 sd_card 路径

    fun getExternalCardDirectory(): JSONObject? {
    if (isSDCardPresent(context)) {
        val storageManager = context.getSystemService(Context.STORAGE_SERVICE)
        try {
            val storageVolumeClazz = Class.forName("android.os.storage.StorageVolume")
            val getVolumeList = storageManager.javaClass.getMethod("getVolumeList")
            val getPath = storageVolumeClazz.getMethod("getPath")
            val isRemovable = storageVolumeClazz.getMethod("isRemovable")
            val isMounted = storageVolumeClazz.getMethod("getState")
            val result = getVolumeList.invoke(storageManager) as Array<*>

            result.forEach {
                if (isRemovable.invoke(it) as Boolean) {
                    val card_state = isMounted.invoke(it) as String
                    var path = File(getPath.invoke(it) as String).absolutePath
                    val sdCardInfo = JSONObject()
                    sdCardInfo.put("path", path)
                    sdCardInfo.put("state", card_state)

                    return sdCardInfo
                }
            }
        } catch (e: Throwable) {
            e.printStackTrace()
        }
        return null
    }
    return null
}

确认写入权限

val writeStoragePermission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)
    if (writeStoragePermission == PackageManager.PERMISSION_GRANTED) {
        Log.d("TAG","Permission is granted");  // permission grant confirmed prints
    }else {
        Log.d("TAG","No Permission is granted");
    }

在 sd_card 根路径上使用 mkdirs() 创建文件夹失败

 val storagePath = getExternalCardDirectory.get("path") as String + File.separator + "Test"
 val targetDir = File(storagePath)

 if (targetDir.exists().not()) {
    targetDir.mkdirs()
 }

任何人请帮助我重新解决它。

标签: javaandroidfileandroid-studiokotlin

解决方案


推荐阅读