美文网首页
Android Studio kotlin 保存图片到系统相册

Android Studio kotlin 保存图片到系统相册

作者: StormerX | 来源:发表于2019-08-12 23:52 被阅读0次

不得不说太恶心了,实现这么个功能折腾了大半天!搜索引擎搜出来的结果五花八门乱七八糟的(到现在为止我还不知道如何获取到系统相册的路径)。


来介绍一下我的实现方法吧。

需求是:把ImageView里的图片保存到系统相册。

1、 在ApplicationMainfest。xml中添加申请磁盘读写权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2、动态申请磁盘读写权限,上面这样写还不能获得权限,所以要动态申请一下,方法很多这里简单写下吧。

在MainActivity代码里定义一个方法。

fun GetPermission()
    {
        if (Build.VERSION.SDK_INT >= 23) {
            val REQUEST_CODE_CONTACT = 101
            val permissions = arrayOf<String>(Manifest.permission.WRITE_EXTERNAL_STORAGE)
            //验证是否许可权限
            for (str in permissions) {
                if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
                    //申请权限
                    this.requestPermissions(permissions, REQUEST_CODE_CONTACT)
                }
            }
        }
    }

然后调用一下。


3、在布局中加入ImageView,然后随便绑定一张本地图片(实际应用的时候应该是网络图片,本例就不赘述了,保存图片的方法一样)

4、布局中加入一个按钮,给它加上点击事件处理。

5、在按钮点击事件里保存图片。把ImageView的内容取出,接着使用MediaStore的方法把图片内容保存到系统相册

        this.bSave.setOnClickListener()
        {
            println("bSave clicked!")

            val draw = this.imageView_photo.drawable as BitmapDrawable
            val bitmap = draw.bitmap

            MediaStore.Images.Media.insertImage(
                contentResolver,
                bitmap!!,
                "image_file",
                "file")

        }

运行效果

点击按钮后图片被保存到系统相册


更多

MediaStore.Images.Media.insertImage()保存图片成功后会返回新建图片的路径。


日志信息


可以根据这个返回值来弹出对话框提示保存成功,需要的话自己写下就好了,本例不再介绍。


相关信息

官方文档:
https://developer.android.com/reference/android/provider/MediaStore.Images.Media.html

相关文章

网友评论

      本文标题:Android Studio kotlin 保存图片到系统相册

      本文链接:https://www.haomeiwen.com/subject/onlmjctx.html