diff --git a/.forgejo/workflows/build-debug.yml b/.forgejo/workflows/build-debug.yml
index 51e802c..1dcc692 100644
--- a/.forgejo/workflows/build-debug.yml
+++ b/.forgejo/workflows/build-debug.yml
@@ -35,12 +35,11 @@ jobs:
- name: Build Debug APKs
run: ./gradlew --no-daemon assembleDebug
- - name: Copy Artifacts
- run: find . -name 'app*-debug.apk' -exec cp {} . \;
-
- name: Upload Artifacts
uses: https://gitea.angry.im/actions/upload-artifact@v3
with:
name: Debug APKs
compression-level: 0
- path: app*-debug.apk
+ path: |
+ app-unpriv/build/outputs/apk/debug/app-unpriv-debug.apk
+ app/build/outputs/apk/debug/app-debug.apk
diff --git a/app-common/src/main/java/im/angry/openeuicc/core/LocalProfileAssistantWrapper.kt b/app-common/src/main/java/im/angry/openeuicc/core/LocalProfileAssistantWrapper.kt
index aab9e63..22ece46 100644
--- a/app-common/src/main/java/im/angry/openeuicc/core/LocalProfileAssistantWrapper.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/core/LocalProfileAssistantWrapper.kt
@@ -52,8 +52,6 @@ class LocalProfileAssistantWrapper(orig: LocalProfileAssistant) :
override fun handleNotification(seqNumber: Long): Boolean = lpa.handleNotification(seqNumber)
- override fun euiccMemoryReset() = lpa.euiccMemoryReset()
-
override fun setNickname(iccid: String, nickname: String): Boolean =
lpa.setNickname(iccid, nickname)
diff --git a/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt b/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt
index 71aa386..b63f343 100644
--- a/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt
@@ -38,8 +38,8 @@ class OmapiApduInterface(
check(!this::lastChannel.isInitialized) {
"Can only open one channel"
}
- lastChannel = session.openLogicalChannel(aid)!!
- return 1
+ lastChannel = session.openLogicalChannel(aid)!!;
+ return 1;
}
override fun logicalChannelClose(handle: Int) {
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt
index 8947480..b7462e2 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt
@@ -20,7 +20,6 @@ import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
-import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
@@ -340,8 +339,6 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
private val name: TextView = root.requireViewById(R.id.name)
private val state: TextView = root.requireViewById(R.id.state)
private val provider: TextView = root.requireViewById(R.id.provider)
- private val profileClassLabel: TextView = root.requireViewById(R.id.profile_class_label)
- private val profileClass: TextView = root.requireViewById(R.id.profile_class)
private val profileMenu: ImageButton = root.requireViewById(R.id.profile_menu)
init {
@@ -367,10 +364,6 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
private lateinit var profile: LocalProfileInfo
fun setProfile(profile: LocalProfileInfo) {
- if (unfilteredProfileListFlow.value) {
- profileClassLabel.isVisible = true
- profileClass.isVisible = true
- }
this.profile = profile
name.text = profile.displayName
@@ -382,13 +375,6 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener,
}
)
provider.text = profile.providerName
- if (profileClass.isVisible) profileClass.setText(
- when (profile.profileClass) {
- LocalProfileInfo.Clazz.Testing -> R.string.profile_class_testing
- LocalProfileInfo.Clazz.Provisioning -> R.string.profile_class_provisioning
- LocalProfileInfo.Clazz.Operational -> R.string.profile_class_operational
- }
- )
iccid.text = profile.iccid
iccid.transformationMethod = PasswordTransformationMethod.getInstance()
}
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt
index 7711643..74f2147 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt
@@ -109,7 +109,7 @@ open class MainActivity : BaseEuiccAccessActivity(), OpenEuiccContextMarker {
override fun onOptionsItemSelected(item: MenuItem): Boolean =
when (item.itemId) {
R.id.settings -> {
- startActivity(Intent(this, SettingsActivity::class.java))
+ startActivity(Intent(this, SettingsActivity::class.java));
true
}
R.id.reload -> {
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt
index c2a1a0f..31b7d7e 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt
@@ -117,14 +117,11 @@ class NotificationsActivity: BaseEuiccAccessActivity(), OpenEuiccContextMarker {
launchTask {
notificationAdapter.notifications =
euiccChannelManager.withEuiccChannel(logicalSlotId) { channel ->
- val nameMap = buildMap {
- for (profile in channel.lpa.profiles) {
- put(profile.iccid, profile.displayName)
- }
- }
+ val profiles = channel.lpa.profiles
channel.lpa.notifications.map {
- LocalProfileNotificationWrapper(it, nameMap[it.iccid] ?: "???")
+ val profile = profiles.find { p -> p.iccid == it.iccid }
+ LocalProfileNotificationWrapper(it, profile?.displayName ?: "???")
}
}
}
@@ -139,8 +136,6 @@ class NotificationsActivity: BaseEuiccAccessActivity(), OpenEuiccContextMarker {
inner class NotificationViewHolder(private val root: View):
RecyclerView.ViewHolder(root), View.OnCreateContextMenuListener, OnMenuItemClickListener {
private val address: TextView = root.requireViewById(R.id.notification_address)
- private val sequenceNumber: TextView =
- root.requireViewById(R.id.notification_sequence_number)
private val profileName: TextView = root.requireViewById(R.id.notification_profile_name)
private lateinit var notification: LocalProfileNotificationWrapper
@@ -162,7 +157,6 @@ class NotificationsActivity: BaseEuiccAccessActivity(), OpenEuiccContextMarker {
}
}
-
private fun operationToLocalizedText(operation: LocalProfileNotification.Operation) =
root.context.getText(
when (operation) {
@@ -176,10 +170,6 @@ class NotificationsActivity: BaseEuiccAccessActivity(), OpenEuiccContextMarker {
notification = value
address.text = value.inner.notificationAddress
- sequenceNumber.text = root.context.getString(
- R.string.profile_notification_sequence_number_format,
- value.inner.seqNumber
- )
profileName.text = Html.fromHtml(
root.context.getString(R.string.profile_notification_name_format,
operationToLocalizedText(value.inner.profileManagementOperation),
diff --git a/app-common/src/main/res/layout/euicc_profile.xml b/app-common/src/main/res/layout/euicc_profile.xml
index 83aae8d..06aa2b8 100644
--- a/app-common/src/main/res/layout/euicc_profile.xml
+++ b/app-common/src/main/res/layout/euicc_profile.xml
@@ -62,43 +62,18 @@
android:singleLine="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/state"
- app:layout_constraintBottom_toTopOf="@+id/profile_class_label"/>
+ app:layout_constraintBottom_toTopOf="@+id/iccid_label"/>
-
-
-
-
diff --git a/app-common/src/main/res/layout/notification_item.xml b/app-common/src/main/res/layout/notification_item.xml
index 5d56b3a..6b7253c 100644
--- a/app-common/src/main/res/layout/notification_item.xml
+++ b/app-common/src/main/res/layout/notification_item.xml
@@ -15,15 +15,6 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
-
有効済み
無効済み
プロバイダー:
+ ICCID:
有効化
無効化
削除
@@ -88,6 +89,7 @@
削除しました
有効化しました
無効化しました
+ <b>%1$s</b> %2$s (%3$s)
処理
削除
eUICC 情報
diff --git a/app-common/src/main/res/values/strings.xml b/app-common/src/main/res/values/strings.xml
index 8ea6e20..d0813d2 100644
--- a/app-common/src/main/res/values/strings.xml
+++ b/app-common/src/main/res/values/strings.xml
@@ -13,11 +13,7 @@
Enabled
Disabled
Provider:
- Class:
- Testing
- Provisioning
- Operational
- ICCID:
+ ICCID:
Enable
Disable
@@ -107,8 +103,7 @@
Deleted
Enabled
Disabled
- <b>%1$s</b> %2$s (%3$s)
- #%d
+ <b>%1$s</b> %2$s (%3$s)
Process
Delete
diff --git a/app/src/main/java/im/angry/openeuicc/core/TelephonyManagerApduInterface.kt b/app/src/main/java/im/angry/openeuicc/core/TelephonyManagerApduInterface.kt
index 6b09368..ef877b4 100644
--- a/app/src/main/java/im/angry/openeuicc/core/TelephonyManagerApduInterface.kt
+++ b/app/src/main/java/im/angry/openeuicc/core/TelephonyManagerApduInterface.kt
@@ -39,7 +39,7 @@ class TelephonyManagerApduInterface(
val hex = aid.encodeHex()
val channel = tm.iccOpenLogicalChannelByPortCompat(port.card.physicalSlotIndex, port.portIndex, hex, 0)
if (channel.status != IccOpenLogicalChannelResponse.STATUS_NO_ERROR || channel.channel == IccOpenLogicalChannelResponse.INVALID_CHANNEL) {
- throw IllegalArgumentException("Cannot open logical channel $hex via TelephonManager on slot ${port.card.physicalSlotIndex} port ${port.portIndex}")
+ throw IllegalArgumentException("Cannot open logical channel $hex via TelephonManager on slot ${port.card.physicalSlotIndex} port ${port.portIndex}");
}
lastChannel = channel.channel
return lastChannel
diff --git a/app/src/main/java/im/angry/openeuicc/util/PrivilegedTelephonyCompat.kt b/app/src/main/java/im/angry/openeuicc/util/PrivilegedTelephonyCompat.kt
index dbd39f2..4c1e19f 100644
--- a/app/src/main/java/im/angry/openeuicc/util/PrivilegedTelephonyCompat.kt
+++ b/app/src/main/java/im/angry/openeuicc/util/PrivilegedTelephonyCompat.kt
@@ -94,7 +94,6 @@ val TelephonyManager.uiccCardsInfoCompat: List
fun TelephonyManager.iccOpenLogicalChannelByPortCompat(
slotIndex: Int, portIndex: Int, aid: String?, p2: Int
): IccOpenLogicalChannelResponse =
- @Suppress("UNNECESSARY_NOT_NULL_ASSERTION")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
iccOpenLogicalChannelByPort(slotIndex, portIndex, aid, p2)!!
} else {
diff --git a/libs/lpac-jni/build.gradle.kts b/libs/lpac-jni/build.gradle.kts
index 93f6082..ff34d56 100644
--- a/libs/lpac-jni/build.gradle.kts
+++ b/libs/lpac-jni/build.gradle.kts
@@ -16,9 +16,9 @@ android {
externalNativeBuild {
ndkBuild {
cFlags(
- "-fmacro-prefix-map=${project.projectDir}=/fake/path/",
- "-fdebug-prefix-map=${project.projectDir}=/fake/path/",
- "-ffile-prefix-map=${project.projectDir}=/fake/path/"
+ "-fmacro-prefix-map=${project.projectDir.toString()}=/fake/path/",
+ "-fdebug-prefix-map=${project.projectDir.toString()}=/fake/path/",
+ "-ffile-prefix-map=${project.projectDir.toString()}=/fake/path/"
)
}
}
diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt
index 58f25aa..cf870e1 100644
--- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt
+++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt
@@ -37,8 +37,6 @@ interface LocalProfileAssistant {
fun deleteNotification(seqNumber: Long): Boolean
fun handleNotification(seqNumber: Long): Boolean
- fun euiccMemoryReset()
-
fun setNickname(
iccid: String, nickname: String
): Boolean
diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LpacJni.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LpacJni.kt
index 09c0117..1e64c69 100644
--- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LpacJni.kt
+++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LpacJni.kt
@@ -33,8 +33,6 @@ internal object LpacJni {
// Cancel any ongoing es9p and/or es10b sessions
external fun cancelSessions(handle: Long)
- // ES10c
- external fun es10cEuiccMemoryReset(handle: Long): Int
// es10cex (actually part of es10b)
external fun es10cexGetEuiccInfo2(handle: Long): Long
diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt
index 0cbebf0..4dbb181 100644
--- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt
+++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt
@@ -241,10 +241,6 @@ class LocalProfileAssistantImpl(
override fun setNickname(iccid: String, nickname: String): Boolean =
LpacJni.es10cSetNickname(contextHandle, iccid, nickname) == 0
- override fun euiccMemoryReset() {
- LpacJni.es10cEuiccMemoryReset(contextHandle)
- }
-
@Synchronized
override fun close() {
if (!finalized) {
diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c
index 8f4752b..f081f8e 100644
--- a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c
+++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c
@@ -245,15 +245,6 @@ Java_net_typeblog_lpac_1jni_LpacJni_es10cexGetEuiccInfo2(JNIEnv *env, jobject th
return (jlong) info;
}
-
-JNIEXPORT jint JNICALL
-Java_net_typeblog_lpac_1jni_LpacJni_es10cEuiccMemoryReset(JNIEnv *env, jobject thiz, jlong handle) {
- struct euicc_ctx *ctx = (struct euicc_ctx *) handle;
- int ret;
- ret = es10c_euicc_memory_reset(ctx);
- return ret;
-}
-
JNIEXPORT jstring JNICALL
Java_net_typeblog_lpac_1jni_LpacJni_stringDeref(JNIEnv *env, jobject thiz, jlong curr) {
return toJString(env, *((char **) curr));