kotlinをはじめて数日しかたっていないKotlin初心者です
間違っていたり効率悪かったり、文法がおかしかったりする可能性が大きいのでご注意ください
デバイス内の画像をアプリ内にファイルとして保存
下記URLをコピペして画像をImageViewに表示できるように
https://github.com/orimomo/picture-frame-app/tree/master
以下の部分に少し追記
data?.data?.also { uri ->
    Log.d("VIDEOURI", "URI:${uri}")
    val inputStream = contentResolver?.openInputStream(uri)
    val image = BitmapFactory.decodeStream(inputStream)
    val imageView = findViewById<ImageView>(R.id.imageView)
    imageView.setImageBitmap(image)
    //追記部分
    //アプリ内にファイル書き込み
    val path = applicationContext.filesDir
    val context = this.applicationContext
    val fileName = uriToFileName(context, uri)
    val filePath = path.toString() + "/" + fileName
    inputStream?.toFile(filePath)
    //追記終了
}以下の関数を追加
fun InputStream.toFile(path: String) {
    File(path).outputStream().use {
        this.copyTo(it)
    }
}
fun uriToFileName(context: Context, uri: Uri): String? {
    return when (uri.scheme) {
    ContentResolver.SCHEME_FILE -> {
        File(uri.path).name
    }
    ContentResolver.SCHEME_CONTENT -> {
        val projection = arrayOf(MediaStore.MediaColumns.DISPLAY_NAME)
        val cursor = context.contentResolver.query(uri, projection, null, null, null)
        cursor?.use {
            if (it.moveToFirst()) { it.getString(0) } else null
            }
        }
        else -> null
    }
}以上でアプリ内に選択した画像が保存される
シミュレーターの場合は「/data/data/パッケージ名/files」以下に保存される
ファイル名の重複等はチェックしていない
参考URL
https://qiita.com/orimomo/items/4b741dc252bc261a8469
https://github.com/orimomo/picture-frame-app/tree/master
https://teratail.com/questions/117206
https://stackoverflow.com/questions/35528409/write-a-large-inputstream-to-file-in-kotlin/35529070
