fun Context.saveBitmap2Galley(bitmap: Bitmap, dir: String = "", name: String): Boolean {    val isSuccessed: Boolean    val fos: OutputStream?    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {        val contentValues = ContentValues()        contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name)        contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/png")        contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, "DCIM/$dir")        val imageUri =            contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)        fos = imageUri?.let { contentResolver.openOutputStream(it) }    } else {        val imageDir = Environment.getExternalStoragePublicDirectory("newMedia/qcodes")        if (!imageDir.exists()) {            imageDir.mkdirs()        }        val file = File(imageDir, name)        fos = FileOutputStream(file)    }    isSuccessed = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)    fos?.flush()    fos?.close()    return isSuccessed}

 需要请求权限

更多相关文章

  1. Android 开机自启和后台自启权限
  2. android典型代码系列(十)------获取一个应用程序的权限信息(反射
  3. 【Android】Android 权限大全
  4. Android SDK1.0 Permission 大全访问权限许可
  5. 关于Android的app权限申请问题
  6. 在Android中通过Java修改文件权限
  7. Android:只需一句话解决读写权限授予后仍提示 Permission denied
  8. android判断是否禁用了录音权限

随机推荐

  1. android 自定义对话框
  2. Android(安卓)SDK Manager无法更新解决方
  3. 几个android实用网站
  4. Android(安卓)ListView滑动加载
  5. android简单的天气预报例子和XML解析
  6. Android: Android(安卓)Touch事件处理
  7. Android入门篇一:Android(安卓)Activity生
  8. 转载 《Android程序运行过程,Android》
  9. android基础(开发环境搭建)
  10. android源码添加service