ソースを参照

feat: recent url sharing (#160)

![Screenshot_20250306-135020.png](/attachments/c2932882-72bd-4fb4-8955-e538d2dcd59c)

see https://developer.android.com/guide/components/activities/recents#url-sharing

Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/160
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
septs 11 ヶ月 前
コミット
8243914588

+ 17 - 0
app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardActivity.kt

@@ -1,5 +1,6 @@
 package im.angry.openeuicc.ui.wizard
 
+import android.app.assist.AssistContent
 import android.os.Bundle
 import android.view.View
 import android.view.inputmethod.InputMethodManager
@@ -8,6 +9,7 @@ import android.widget.ProgressBar
 import android.widget.Toast
 import androidx.activity.OnBackPressedCallback
 import androidx.activity.enableEdgeToEdge
+import androidx.core.net.toUri
 import androidx.core.view.ViewCompat
 import androidx.core.view.WindowInsetsCompat
 import androidx.core.view.updatePadding
@@ -111,6 +113,21 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
         }
     }
 
+    override fun onProvideAssistContent(outContent: AssistContent?) {
+        super.onProvideAssistContent(outContent)
+        outContent?.webUri = try {
+            val activationCode = ActivationCode(
+                state.smdp,
+                state.matchingId,
+                null,
+                state.confirmationCode != null,
+            )
+            "LPA:$activationCode".toUri()
+        } catch (_: Exception) {
+            null
+        }
+    }
+
     override fun onSaveInstanceState(outState: Bundle) {
         super.onSaveInstanceState(outState)
         outState.putString("currentStepFragmentClassName", state.currentStepFragmentClassName)

+ 11 - 0
app-common/src/main/java/im/angry/openeuicc/util/ActivationCode.kt

@@ -20,4 +20,15 @@ data class ActivationCode(
             )
         }
     }
+
+    override fun toString(): String {
+        val parts = arrayOf(
+            "1",
+            address,
+            matchingId ?: "",
+            oid ?: "",
+            if (confirmationCodeRequired) "1" else ""
+        )
+        return parts.joinToString("$").trimEnd('$')
+    }
 }