HostApduService на Android 16Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 HostApduService на Android 16

Сообщение Anonymous »

Это небольшой пример из более крупного проекта, где необходимо использовать HostApduService. Я хочу убедиться, что мое приложение корректно работает на Android 16, но у меня возникли проблемы.
  • ApduService

Код: Выделить всё

class MyHostApduService: HostApduService() {
init {
println("MyHostApduService ---> $this")
}

override fun processCommandApdu(bytes: ByteArray?, bundle: Bundle?): ByteArray {
println("MyHostApduService processCommandApdu ${bytes?.toHexString()}, $bundle")
return byteArrayOf(0xA5.toByte())
}

override fun onDeactivated(reason: Int) {
println("MyHostApduService onDeactivated $reason")
}
}

fun ByteArray.toHexString(): String {
return joinToString("") { "%02X".format(it) }
}
  • AndroidManifest.xml
  • apduservice.xml
В Android 9, 12, 14 и 15 каждый раз, когда устройство чтения NFC находится рядом с телефоном, запускается новый экземпляр службы, и он всегда работает должным образом.

Код: Выделить всё

// First attempt
MyHostApduService ---> com.example.android.MyHostApduService@a4638dc
MyHostApduService processCommandApdu 00A4040010A0ABC001234554321BBCC2211AAA0555, null
MyHostApduService onDeactivated 0
// Second attempt
MyHostApduService ---> com.example.android.MyHostApduService@c15c0ba
MyHostApduService processCommandApdu 00A4040010A0ABC001234554321BBCC2211AAA0555, null
MyHostApduService onDeactivated 0
// Third attempt
MyHostApduService ---> com.example.android.MyHostApduService@86c06c8
MyHostApduService processCommandApdu 00A4040010A0ABC001234554321BBCC2211AAA0555, null
MyHostApduService onDeactivated 0
Однако в Android 16 Beta 2 экземпляр остается прежним и запускается сразу после запуска приложения, даже при отсутствии поблизости устройства чтения NFC. При поднесении читалки с первого раза работает нормально, при последующих попытках не работает.

Код: Выделить всё

MyHostApduService ---> com.example.android.MyHostApduService@ddcb1b
// First attempt
MyHostApduService processCommandApdu 00A4040010A0ABC001234554321BBCC2211AAA0555, null
MyHostApduService onDeactivated 0
// Second attempt
MyHostApduService processCommandApdu 00A4040010A0ABC001234554321BBCC2211AAA0555, null
MyHostApduService onDeactivated 0
// Third attempt
MyHostApduService processCommandApdu 00A4040010A0ABC001234554321BBCC2211AAA0555, null
MyHostApduService onDeactivated 0
Я проверил документацию Android 16, но не вижу никаких изменений в HostApduService, которые могли бы объяснить такое поведение.
Я делаю что-то не так?

Подробнее здесь: https://stackoverflow.com/questions/794 ... android-16
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»