android - Android 写入 /sdcard/
问题描述
我需要将图像保存到/sdcard/sample/0/b/image.png。我试过这个:
val dir = File("/sdcard/sample/0/b/")
dir.mkdirs()
val image = File(dir, "image.png")
image.createNewFile()
var out: FileOutputStream? = null
try {
out = FileOutputStream(image)
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)
} finally {
out?.close()
}
而且我总是收到该文件不存在。另外,我尝试用 Environment.getExternalStorageDirectory().path 替换“/sdcard”,但结果是一样的。
java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:281)
at java.io.File.createNewFile(File.java:1000)
在清单中,为了测试,我添加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission-sdk-23 android:name="android.permission.READ_EXTERNAL_STORAGE"/>
解决方案
我应该使用
val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
requestPermissions(permissions, 0x512)
即使我添加了清单 sdk-23 的权限
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
推荐阅读
- javascript - Flutter 如何从 api 下载 pdf 文件
- vb.net - 如何在 Windows 窗体中设置注册表项
- javascript - 将 React 组件集成到现有的 NET Core 应用程序中
- angular - 角度反应形式 - RxwebValidators conditionalExpression 无法正常工作
- php - 在 Codeigniter 4 中,如何显示数据库名称和表前缀?
- android-studio - 如何停止 android studio 自动导入以从 Flutter 的“file://...”开始
- python - 如何在 Django 中连接到现有的 oracle db 表
- ascii - 在 ASCII 表 Python 中输入的符号是什么?
- database - Delphi 在运行时设置 AdoConnection 会导致访问冲突
- javascript - 跟踪状态变化?