使用 Kotlin 在 Android Studio 中将 URI 的内容转换为 ByteArray

Ali*_*ran 4 arrays android kotlin

我需要从本地存储中选择一个 pdf 并将其转换为 byteArray 作为 firebase 数据库路径。我搜索了很多,但没有找到这个问题的答案。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if(requestCode == RC_SELECT_PDF && resultCode == Activity.RESULT_OK &&
        data != null && data.data != null) {
            val hereUrl:Uri = data.data
            var os = ByteArrayOutputStream()
            var inputStream = this@RegistrasiPengajarActivity?.contentResolver.openInputStream(hereUrl)
            var byteArray = inputStream.available()
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我能做的,我已经选择了 pdf,但仍然不知道如何转换它

Ale*_*ger 7

Kotlin(自 1.3 起)提供了InputStream.readBytes()将 an 的所有字节读取InputStreamByteArray.

在你的情况下使用:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
     if(requestCode == RC_SELECT_PDF && resultCode == Activity.RESULT_OK &&
            data != null && data.data != null){
            val hereUrl:Uri = data.data
            var os = ByteArrayOutputStream()
            var inputStream = this@RegistrasiPengajarActivity?.contentResolver.openInputStream(hereUrl)
            var byteArray = inputStream.readBytes()
        }
    }
Run Code Online (Sandbox Code Playgroud)