android.system.ErrnoException: open failed: EPERM (Operation not permitted)

android 10(Q)开始增加了沙盒机制,不能直接把文件保存到/sdcard目录下,只能保存到APP专属目录下;AndroidManifest.xml在标签下增加属性【android:requestLegacyExternalStorage="true"】可以暂时保存到/sdcard路径下,但是Android11开始就失效了

我们可以通过Context的getExternalFilesDir(null)方法获取APP专属目录,例如:/storage/emulated/0/Android/data/com.example.myapplication/files如果需要把图片保存到系统相册里可以参考下面代码:

val bitmap = BitmapFactory.decodeResource(resources, R.drawable.image_03)

val values = ContentValues();

values.put( MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + File.separator + "MyApplication"); //在图库里显示的文件夹名:MyApplication

values.put(MediaStore.MediaColumns.DISPLAY_NAME, "test");

values.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");

values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis() / 1000);

values.put(MediaStore.MediaColumns.DATE_MODIFIED, System.currentTimeMillis() / 1000);

values.put(MediaStore.MediaColumns.IS_PENDING, 1);

val resolver = contentResolver;

val uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

val out = resolver.openOutputStream(uri!!)

bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out)

values.clear()

values.put(MediaStore.MediaColumns.IS_PENDING, 0)

values.putNull(MediaStore.MediaColumns.DATE_EXPIRES)

resolver.update(uri, values, null, null)

相关推荐
whysqwhw8 分钟前
安卓MediaCodec实现视频文件的转码压缩
android
沅霖4 小时前
下载Android studio
android·ide·android studio
xzkyd outpaper4 小时前
Kotlin 协程线程切换机制详解
android·开发语言·kotlin
Near_Li5 小时前
uniapp-使用mumu模拟器调试安卓APP
android·uni-app
zhangphil6 小时前
Android MediaMetadataRetriever取视频封面,Kotlin(1)
android·kotlin
onthewaying8 小时前
详解 Android GLSurfaceView 与 Renderer:开启你的 OpenGL ES 之旅
android·opengl
aqi009 小时前
FFmpeg开发笔记(八十)使用百变魔音AiSound实现变声特效
android·ffmpeg·音视频·直播·流媒体
xzkyd outpaper9 小时前
Android中RecyclerView基本使用
android
我命由我1234511 小时前
Android 开发问题:The specified child already has a parent.
android·java·开发语言·java-ee·android jetpack·android-studio·android runtime
pengyu11 小时前
【Kotlin系统化精讲:肆】 | 数据类型之基本数据类型:代码世界里的砖瓦水泥沙
android·kotlin