Преобразование содержимого URI в ByteArray в Android Studio с помощью Kotlin - PullRequest
2 голосов
/ 08 апреля 2019

Мне нужно выбрать 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()
    }
}

это все, что я могу сделать, я выбрал PDF, но все еще не знаю, как его преобразовать

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Kotlin (начиная с версии 1.3) предоставляет метод расширения InputStream.readBytes() для чтения всех байтов InputStream в ByteArray.

В вашем случае используйте:

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.getBytes()
        }
    }
1 голос
/ 08 апреля 2019

Попробуйте это:

var iStream = getContentResolver().openInputStream(uri)
var inputData = getBytes(iStream)

@Throws(IOException::class)
fun getBytes(inputStream:InputStream):ByteArray {
  val byteBuffer = ByteArrayOutputStream()
  val bufferSize = 1024
  val buffer = ByteArray(bufferSize)
  val len = 0
  while ((len = inputStream.read(buffer)) != -1)
  {
    byteBuffer.write(buffer, 0, len)
  }
  return byteBuffer.toByteArray()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...