Android Studio kotlin 保存圖片到系統相冊

不得不說太惡心了,實現這么個功能折騰了大半天!搜索引擎搜出來的結果五花八門亂七八糟的(到現在為止我還不知道如何獲取到系統相冊的路徑)。


來介紹一下我的實現方法吧。

需求是:把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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。