permissions-dispatcher / PermissionsDispatcher

A declarative API to handle Android runtime permissions.
https://github.com/permissions-dispatcher/PermissionsDispatcher
Apache License 2.0
11.22k stars 1.44k forks source link

Kotlin generation doesn't keep Array<kotlin.Byte> #620

Closed kahakai closed 5 years ago

kahakai commented 5 years ago

Overview

@NeedsPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) fun saveBytes(bytes: Array<Byte>) { ... }

Expected

fun Fragment.saveBytesWithPermissionCheck(bytes: Array<kotlin.Byte>) { ... }

I expect both Kotlin Byte type.

Actual

fun Fragment.saveBytesWithPermissionCheck(bytes: Array<java.lang.Byte>) { ... }

Environment

kahakai commented 5 years ago

Here is a workaround:



// bytes is a Kotlin ByteArray
var byteArray = arrayOf<java.lang.Byte>()
bytes.forEach { byte ->
    byteArray += java.lang.Byte(byte)
}
saveBytesWithPermissionCheck(byteArray)

@NeedsPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
fun saveBill(bytes: Array<java.lang.Byte>) {
    val byteArray = ByteArray(bytes.size) { index -> bytes[index].toByte() }
    // now use you can use byteArray, which is Kotlin ByteArray
}
hotchemi commented 5 years ago

Same as https://github.com/permissions-dispatcher/PermissionsDispatcher/issues/599