MainActivity.kt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.example.uicceditor
  2. import android.os.Bundle
  3. import android.telephony.IccOpenLogicalChannelResponse
  4. import android.telephony.TelephonyManager
  5. import android.util.Log
  6. import androidx.activity.enableEdgeToEdge
  7. import androidx.appcompat.app.AppCompatActivity
  8. import androidx.core.view.ViewCompat
  9. import androidx.core.view.WindowInsetsCompat
  10. class MainActivity : AppCompatActivity() {
  11. private val TAG = "APDU"
  12. override fun onCreate(savedInstanceState: Bundle?) {
  13. super.onCreate(savedInstanceState)
  14. enableEdgeToEdge()
  15. setContentView(R.layout.activity_main)
  16. ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
  17. val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
  18. v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
  19. insets
  20. }
  21. runApdu("00a40004022fe2")
  22. runApdu("00b000000a")
  23. }
  24. fun runApdu(cmd: String): String {
  25. val cla = cmd.substring(0, 2).toInt(16)
  26. val ins = cmd.substring(2, 4).toInt(16)
  27. val p1 = cmd.substring(4, 6).toInt(16)
  28. val p2 = cmd.substring(6, 8).toInt(16)
  29. val p3 = cmd.substring(8, 10).toInt(16)
  30. val data = cmd.substring(10)
  31. Log.i(TAG, "sendApdu: $cmd")
  32. val res =
  33. (getSystemService(TELEPHONY_SERVICE) as TelephonyManager).iccTransmitApduBasicChannel(
  34. cla,
  35. ins,
  36. p1,
  37. p2,
  38. p3,
  39. data
  40. )
  41. Log.i(TAG, "apdu response: $res")
  42. return res
  43. }
  44. }