java - 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()
}
任何人请帮助我重新解决它。
解决方案
推荐阅读
- arrays - 制作结构 JSON 模式
- google-apps-script - 通过 Apps 脚本添加的 Google 联系人无法按预期工作
- laravel - 如何在 ionic 3 中发布关联数组
- c++ - 视觉小说开发 - 我应该一次加载所有语音和图像资产吗?
- c# - 尝试创建 n 个任务并并行运行它们。我究竟做错了什么?
- c++ - 将自定义类(继承 QObject)传递给 QML 的最佳方法是什么?
- linux - 如何在 strace 日志中读取 error62?
- cassandra - 将数据帧写入面向 BusyPoolException 的 cassandra
- php - 如何在短代码中将页面标题作为参数发送
- spring - 同时保存孩子和父母