栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin Android10 open failed: EACCES (Permission denied) 解决方法 AndroidQ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin Android10 open failed: EACCES (Permission denied) 解决方法 AndroidQ

项目场景:

项目中的一个小功能,需要 截图 并且上传截图以file类型传给后端

问题描述:

上传截图数据过程中 后端返回给我 open failed: EACCES (Permission denied)的错误提示

@RequiresApi(Build.VERSION_CODES.M)
    fun cutScreen() {
        //获取view缓存
        this.window.decorView.isDrawingCacheEnabled = true
        val bmp: Bitmap = this.window.decorView.drawingCache
        //这里"IMG"+ Calendar.getInstance().time如果没有可能会出现报错
        val uri = Uri.parse(
            MediaStore.Images.Media.insertImage(
                contentResolver,
                bmp,
                "IMG" + Calendar.getInstance().time,
                null
            )
        )
        val file = Utils.getFileFromUri(uri, this)
        sendMultipart("url", 0, file)
    }

原因分析:

android 10 需要手动申请权限并且只能访问自己目录下的文件

解决方案:

1.手动申请读取权限

   
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (checkSelfPermission(PERMISSION_WRITE_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(arrayOf(PERMISSION_WRITE_STORAGE), REQUEST_PERMISSION_CODE)
        }
    }

    myService.subscribe(MyService.RESPONSE_TOPIC, 1)
    main()

2.在AndroidManifest.xml的application中添加一句话
android:requestLegacyExternalStorage=“true”

3.将图片拷贝到自己的APP目录下 传给服务器
这个网上有方法 自己去搜

共勉

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号