安卓Q及以上申请存储权限问题

2021-08-02  本文已影响0人  蓝不蓝编程

背景

最近公司在整改权限申请问题。之前app启动就申请所有权限,现在国家要求所有厂商整改,只能在需要的时候申请。

存储权限

存储权限的整改还比较麻烦,按照网上说的,不能直接访问文件路径,只能通过MediaStore来操作文件。

 fun writeFile(context: Context, ins: InputStream) {
        val values = ContentValues()
        values.put(MediaStore.Images.Media.DISPLAY_NAME, "image_screenshot.jpg")
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
        values.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES)
        val uri = context.contentResolver.insert(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            values
        )!!

        val out = context.contentResolver.openOutputStream(uri)!!
        val buffer = ByteArray(1024)
        var len: Int = ins.read(buffer)
        while (len != -1) {
            out.write(buffer, 0, len)
            len = ins.read(buffer)
        }
        out.close()
        ins.close()
    }

但是后来又发现还有个土方法:
还是采用传统的读写文件方式,而且不再需要申请权限,只不过写文件的目录只能是download目录。

上一篇下一篇

猜你喜欢

热点阅读