|
@@ -100,19 +100,19 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_TELECOM)
|
|
apduChannel.select(SIMView.FID_DF_TELECOM)
|
|
|
apduChannel.select(SIMView.FID_EF_MSISDN)
|
|
apduChannel.select(SIMView.FID_EF_MSISDN)
|
|
|
- val msisdn = decMSISDN(apduChannel.readRecord(1, 28).substring(28)) ?: ""
|
|
|
|
|
|
|
+ val msisdn = SimEncoder.decMSISDN(apduChannel.readRecord(1, 28).substring(28)) ?: ""
|
|
|
binding.etMsisdn.setText(msisdn)
|
|
binding.etMsisdn.setText(msisdn)
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
binding.btnWriteMsisdn.setOnClickListener {
|
|
binding.btnWriteMsisdn.setOnClickListener {
|
|
|
val msisdn = binding.etMsisdn.text.toString()
|
|
val msisdn = binding.etMsisdn.text.toString()
|
|
|
- Log.i(TAG, "MSISDN: ${encMSISDN(msisdn)}")
|
|
|
|
|
|
|
+ Log.i(TAG, "MSISDN: ${SimEncoder.encMSISDN(msisdn)}")
|
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_TELECOM)
|
|
apduChannel.select(SIMView.FID_DF_TELECOM)
|
|
|
apduChannel.select(SIMView.FID_EF_MSISDN)
|
|
apduChannel.select(SIMView.FID_EF_MSISDN)
|
|
|
- apduChannel.writeRecord(1, encMSISDN(msisdn).padStart(56, 'F'))
|
|
|
|
|
|
|
+ apduChannel.writeRecord(1, SimEncoder.encMSISDN(msisdn).padStart(56, 'F'))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
|
|
|
|
|
// val subscriptionManager =
|
|
// val subscriptionManager =
|
|
@@ -129,7 +129,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
0x01,
|
|
0x01,
|
|
|
0x04,
|
|
0x04,
|
|
|
0x1C,
|
|
0x1C,
|
|
|
- encMSISDN(msisdn).padStart(56, 'F')
|
|
|
|
|
|
|
+ SimEncoder.encMSISDN(msisdn).padStart(56, 'F')
|
|
|
)
|
|
)
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
@@ -139,12 +139,12 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
apduChannel.select(SIMView.FID_EF_PLMNSEL)
|
|
apduChannel.select(SIMView.FID_EF_PLMNSEL)
|
|
|
- binding.etPlmn.setText(decPLMN(apduChannel.readBinary(60)))
|
|
|
|
|
|
|
+ binding.etPlmn.setText(SimEncoder.decPLMN(apduChannel.readBinary(60)))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
binding.btnWritePlmn.setOnClickListener {
|
|
binding.btnWritePlmn.setOnClickListener {
|
|
|
- val plmn = encPLMN(binding.etPlmn.text.toString())
|
|
|
|
|
|
|
+ val plmn = SimEncoder.encPLMN(binding.etPlmn.text.toString())
|
|
|
Log.i(TAG, "btnWritePlmn: $plmn")
|
|
Log.i(TAG, "btnWritePlmn: $plmn")
|
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
@@ -161,16 +161,16 @@ class MainActivity : AppCompatActivity() {
|
|
|
Toast.makeText(this, "Invalid PLMN", Toast.LENGTH_SHORT).show()
|
|
Toast.makeText(this, "Invalid PLMN", Toast.LENGTH_SHORT).show()
|
|
|
return@setOnClickListener
|
|
return@setOnClickListener
|
|
|
}
|
|
}
|
|
|
- val plmnHex = encPLMN(plmn.joinToString(","))
|
|
|
|
|
|
|
+ val plmnHex = SimEncoder.encPLMN(plmn.joinToString(","))
|
|
|
Log.i(TAG, "plmnHex: $plmnHex")
|
|
Log.i(TAG, "plmnHex: $plmnHex")
|
|
|
|
|
|
|
|
- val plmnwactHex = encPLMNwAcT(plmn.flatMap {
|
|
|
|
|
|
|
+ val plmnwactHex = SimEncoder.encPLMNwAcT(plmn.flatMap {
|
|
|
listOf("${it}:4000,$it:8000,$it:0080")
|
|
listOf("${it}:4000,$it:8000,$it:0080")
|
|
|
}.joinToString(","))
|
|
}.joinToString(","))
|
|
|
Log.i(TAG, "plmnwactHex: $plmnwactHex")
|
|
Log.i(TAG, "plmnwactHex: $plmnwactHex")
|
|
|
|
|
|
|
|
val fplmn =
|
|
val fplmn =
|
|
|
- encPLMN("46000,46001,46002,46006,46007,46011,46012,46015,46020")
|
|
|
|
|
|
|
+ SimEncoder.encPLMN("46000,46001,46002,46006,46007,46011,46012,46015,46020")
|
|
|
|
|
|
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
@@ -211,7 +211,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
apduChannel.select(SIMView.FID_EF_EHPLMN)
|
|
apduChannel.select(SIMView.FID_EF_EHPLMN)
|
|
|
- binding.etEhplmn.setText(decPLMN(apduChannel.readBinary(12)))
|
|
|
|
|
|
|
+ binding.etEhplmn.setText(SimEncoder.decPLMN(apduChannel.readBinary(12)))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -220,12 +220,12 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
apduChannel.select(SIMView.FID_EF_FPLMN)
|
|
apduChannel.select(SIMView.FID_EF_FPLMN)
|
|
|
- binding.etFplmn.setText(decPLMN(apduChannel.readBinary(30)))
|
|
|
|
|
|
|
+ binding.etFplmn.setText(SimEncoder.decPLMN(apduChannel.readBinary(30)))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
binding.btnWriteFplmn.setOnClickListener {
|
|
binding.btnWriteFplmn.setOnClickListener {
|
|
|
- val plmn = encPLMN(binding.etFplmn.text.toString())
|
|
|
|
|
|
|
+ val plmn = SimEncoder.encPLMN(binding.etFplmn.text.toString())
|
|
|
Log.i(TAG, "btnWritePlmn: $plmn")
|
|
Log.i(TAG, "btnWritePlmn: $plmn")
|
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
val apduChannel = ApduChannel(telephonyManager, AID)
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
@@ -240,7 +240,18 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
apduChannel.select(SIMView.FID_EF_PLMNWACT)
|
|
apduChannel.select(SIMView.FID_EF_PLMNWACT)
|
|
|
- binding.etPlmnwact.setText(decPLMNwAcT(apduChannel.readBinary(120)))
|
|
|
|
|
|
|
+ binding.etPlmnwact.setText(SimEncoder.decPLMNwAcT(apduChannel.readBinary(120)))
|
|
|
|
|
+ apduChannel.close()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ binding.btnWritePlmnwact.setOnClickListener {
|
|
|
|
|
+ val plmn = SimEncoder.encPLMNwAcT(binding.etPlmnwact.text.toString())
|
|
|
|
|
+ Log.i(TAG, "btnWritePlmn: $plmn")
|
|
|
|
|
+ val apduChannel = ApduChannel(telephonyManager, AID)
|
|
|
|
|
+ apduChannel.select(SIMView.FID_MF)
|
|
|
|
|
+ apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
|
|
+ apduChannel.select(SIMView.FID_EF_PLMNWACT)
|
|
|
|
|
+ apduChannel.writeBinary(plmn.padEnd(240, 'f'))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -249,7 +260,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
apduChannel.select(SIMView.FID_EF_OPLMNWACT)
|
|
apduChannel.select(SIMView.FID_EF_OPLMNWACT)
|
|
|
- binding.etOplmnwact.setText(decPLMNwAcT(apduChannel.readBinary(60)))
|
|
|
|
|
|
|
+ binding.etOplmnwact.setText(SimEncoder.decPLMNwAcT(apduChannel.readBinary(60)))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -258,7 +269,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
apduChannel.select(SIMView.FID_MF)
|
|
apduChannel.select(SIMView.FID_MF)
|
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
apduChannel.select(SIMView.FID_DF_GSM)
|
|
|
apduChannel.select(SIMView.FID_EF_HPLMNWACT)
|
|
apduChannel.select(SIMView.FID_EF_HPLMNWACT)
|
|
|
- binding.etHplmnwact.setText(decPLMNwAcT(apduChannel.readBinary(20)))
|
|
|
|
|
|
|
+ binding.etHplmnwact.setText(SimEncoder.decPLMNwAcT(apduChannel.readBinary(20)))
|
|
|
apduChannel.close()
|
|
apduChannel.close()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -270,7 +281,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
val sender = binding.etSender.text.toString()
|
|
val sender = binding.etSender.text.toString()
|
|
|
val body = binding.etSms.text.toString()
|
|
val body = binding.etSms.text.toString()
|
|
|
if (sender.isNotEmpty() && body.isNotEmpty()) {
|
|
if (sender.isNotEmpty() && body.isNotEmpty()) {
|
|
|
- val smsManager = (getSystemService("sms") as SmsManager).createForSubscriptionId(12)
|
|
|
|
|
|
|
+ val smsManager = (getSystemService("sms") as SmsManager)
|
|
|
val pendingIntent = PendingIntent.getBroadcast(
|
|
val pendingIntent = PendingIntent.getBroadcast(
|
|
|
this,
|
|
this,
|
|
|
1,
|
|
1,
|