[Koltin1.5.21]contentのuriをfileのuriに変換

概要

contentのuriをfileのuriに変換する。
このuriを
content://com.android.providers.media.documents/document/image%3A40

このuriにしたい
/storage/emulated/0/DCIM/Camera/IMG_20210921_232130.jpg

環境

Kotlin 1.5.21
Android Studio Arctic Fox 2020.3.1
macOS Big Sur 11.4

実装

ググるとよく出てくる実装ですが、実は古いバージョン(Android3未満)の実装方法みたいです。

        val contentResolver = requireActivity().contentResolver
        val columns = arrayOf(
            MediaStore.Images.Media.DATA
        )
        val cursor = contentResolver.query(uri!!, columns, null, null, null)
        cursor!!.moveToFirst()
        val path = cursor!!.getString(
            cursor!!.getColumnIndexOrThrow(
                MediaStore.Images.Media.DATA
            )
        )
        cursor!!.close()
        Log.d("path", path)

で、新しい実装方法はこちら

        val docId = DocumentsContract.getDocumentId(uri)
        val id = docId.split(":")[1];
        val contentResolver = requireActivity().contentResolver
        val columns = arrayOf(
            MediaStore.Images.Media.DATA
        )
        val selection = MediaStore.Images.Media._ID + "=?";
        val cursor: Cursor? = contentResolver.query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            columns, selection, arrayOf(id), null
        )
        cursor!!.moveToFirst()
        val path = cursor.getString(
            cursor.getColumnIndexOrThrow(
                MediaStore.Images.Media.DATA
            )
        )
        cursor.close()
        Log.d("path", path)
スポンサーリンク
PR
PR

シェアする

  • このエントリーをはてなブックマークに追加

フォローする