diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 393d63c..af4adc5 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -90,6 +90,13 @@
+
+
+
+
+
+
{
+ // Extract query parameters
+ val queryParams = data.queryParameterNames
+ queryParams.forEach { param ->
+ val value = data.getQueryParameter(param)
+ // Handle your parameters here
+ Log.d("LibrePods", "Parameter: $param = $value")
+ }
+
+ // Process the magic keys addition
+ handleAddMagicKeys(data)
+ }
+ }
+ }
+ }
+
+ private fun handleAddMagicKeys(uri: Uri) {
+ val context = this
+ val sharedPreferences = getSharedPreferences("settings", Context.MODE_PRIVATE)
+
+ val irkHex = uri.getQueryParameter("irk")
+ val encKeyHex = uri.getQueryParameter("enc_key")
+
+ try {
+ if (irkHex != null && validateHexInput(irkHex)) {
+ val irkBytes = hexStringToByteArray(irkHex)
+ val irkBase64 = Base64.encode(irkBytes)
+ sharedPreferences.edit().putString("IRK", irkBase64).apply()
+ }
+
+ if (encKeyHex != null && validateHexInput(encKeyHex)) {
+ val encKeyBytes = hexStringToByteArray(encKeyHex)
+ val encKeyBase64 = Base64.encode(encKeyBytes)
+ sharedPreferences.edit().putString("ENC_KEY", encKeyBase64).apply()
+ }
+
+ Toast.makeText(this, "Magic keys added successfully!", Toast.LENGTH_SHORT).show()
+ } catch (e: Exception) {
+ Toast.makeText(this, "Error processing magic keys: ${e.message}", Toast.LENGTH_LONG).show()
+ }
+ }
+
+ private fun validateHexInput(input: String): Boolean {
+ val hexPattern = Regex("^[0-9a-fA-F]{32}$")
+ return hexPattern.matches(input)
+ }
+
+ private fun hexStringToByteArray(hex: String): ByteArray {
+ val result = ByteArray(16)
+ for (i in 0 until 16) {
+ val hexByte = hex.substring(i * 2, i * 2 + 2)
+ result[i] = hexByte.toInt(16).toByte()
+ }
+ return result
+ }
}
@SuppressLint("MissingPermission", "InlinedApi", "UnspecifiedRegisterReceiverFlag")
@@ -660,5 +731,4 @@ fun PermissionCard(
}
}
}
-}
-
+}
\ No newline at end of file