diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index e87380b..59d8ad0 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -4,8 +4,6 @@
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index d06202a..d051337 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,10 +13,11 @@
-
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 3476b70..bf861c2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,7 +36,7 @@ android {
}
dependencies {
- compileOnly project(':libs:hidden-apis-stub')
+ compileOnly project(":libs:hidden-apis")
implementation project(":libs:lpad-sm-dp-plus-connector")
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
diff --git a/app/src/main/java/im/angry/openeuicc/util/TelephonyManagerHiddenApi.kt b/app/src/main/java/im/angry/openeuicc/util/TelephonyManagerHiddenApi.kt
deleted file mode 100644
index 1bc0121..0000000
--- a/app/src/main/java/im/angry/openeuicc/util/TelephonyManagerHiddenApi.kt
+++ /dev/null
@@ -1,53 +0,0 @@
-package im.angry.openeuicc.util
-
-import android.telephony.IccOpenLogicalChannelResponse
-import android.telephony.SubscriptionManager
-import android.telephony.TelephonyManager
-import java.lang.reflect.Method
-
-// Hidden APIs via reflection to enable building without AOSP source tree
-// When building against AOSP, this file can be simply excluded to resolve
-// calls to AOSP hidden APIs
-private val iccOpenLogicalChannelBySlot: Method by lazy {
- TelephonyManager::class.java.getMethod(
- "iccOpenLogicalChannelBySlot",
- Int::class.java, String::class.java, Int::class.java
- )
-}
-private val iccCloseLogicalChannelBySlot: Method by lazy {
- TelephonyManager::class.java.getMethod(
- "iccCloseLogicalChannelBySlot",
- Int::class.java, Int::class.java
- )
-}
-private val iccTransmitApduLogicalChannelBySlot: Method by lazy {
- TelephonyManager::class.java.getMethod(
- "iccTransmitApduLogicalChannelBySlot",
- Int::class.java, Int::class.java, Int::class.java, Int::class.java,
- Int::class.java, Int::class.java, Int::class.java, String::class.java
- )
-}
-
-fun TelephonyManager.iccOpenLogicalChannelBySlot(
- slotId: Int, appletId: String, p2: Int
-): IccOpenLogicalChannelResponse =
- iccOpenLogicalChannelBySlot.invoke(this, slotId, appletId, p2) as IccOpenLogicalChannelResponse
-
-fun TelephonyManager.iccCloseLogicalChannelBySlot(slotId: Int, channel: Int): Boolean =
- iccCloseLogicalChannelBySlot.invoke(this, slotId, channel) as Boolean
-
-fun TelephonyManager.iccTransmitApduLogicalChannelBySlot(
- slotId: Int, channel: Int, cla: Int, instruction: Int,
- p1: Int, p2: Int, p3: Int, data: String?
-): String? =
- iccTransmitApduLogicalChannelBySlot.invoke(
- this, slotId, channel, cla, instruction, p1, p2, p3, data
- ) as String?
-
-private val requestEmbeddedSubscriptionInfoListRefresh: Method by lazy {
- SubscriptionManager::class.java.getMethod("requestEmbeddedSubscriptionInfoListRefresh", Int::class.java)
-}
-
-fun SubscriptionManager.requestEmbeddedSubscriptionInfoListRefresh(cardId: Int): Unit {
- requestEmbeddedSubscriptionInfoListRefresh.invoke(this, cardId)
-}
\ No newline at end of file
diff --git a/app/src/main/java/im/angry/openeuicc/util/TelephonyUtils.kt b/app/src/main/java/im/angry/openeuicc/util/TelephonyUtils.kt
index 28b9623..05c31e7 100644
--- a/app/src/main/java/im/angry/openeuicc/util/TelephonyUtils.kt
+++ b/app/src/main/java/im/angry/openeuicc/util/TelephonyUtils.kt
@@ -1,8 +1,10 @@
package im.angry.openeuicc.util
+import android.telephony.IccOpenLogicalChannelResponse
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
import java.lang.Exception
+import java.lang.reflect.Method
val TelephonyManager.supportsDSDS: Boolean
get() = supportedModemCount == 2
@@ -21,4 +23,49 @@ fun SubscriptionManager.tryRefreshCachedEuiccInfo(cardId: Int) {
// Ignore
}
}
+}
+
+// Hidden APIs via reflection to enable building without AOSP source tree
+private val iccOpenLogicalChannelBySlot: Method by lazy {
+ TelephonyManager::class.java.getMethod(
+ "iccOpenLogicalChannelBySlot",
+ Int::class.java, String::class.java, Int::class.java
+ )
+}
+private val iccCloseLogicalChannelBySlot: Method by lazy {
+ TelephonyManager::class.java.getMethod(
+ "iccCloseLogicalChannelBySlot",
+ Int::class.java, Int::class.java
+ )
+}
+private val iccTransmitApduLogicalChannelBySlot: Method by lazy {
+ TelephonyManager::class.java.getMethod(
+ "iccTransmitApduLogicalChannelBySlot",
+ Int::class.java, Int::class.java, Int::class.java, Int::class.java,
+ Int::class.java, Int::class.java, Int::class.java, String::class.java
+ )
+}
+
+fun TelephonyManager.iccOpenLogicalChannelBySlot(
+ slotId: Int, appletId: String, p2: Int
+): IccOpenLogicalChannelResponse =
+ iccOpenLogicalChannelBySlot.invoke(this, slotId, appletId, p2) as IccOpenLogicalChannelResponse
+
+fun TelephonyManager.iccCloseLogicalChannelBySlot(slotId: Int, channel: Int): Boolean =
+ iccCloseLogicalChannelBySlot.invoke(this, slotId, channel) as Boolean
+
+fun TelephonyManager.iccTransmitApduLogicalChannelBySlot(
+ slotId: Int, channel: Int, cla: Int, instruction: Int,
+ p1: Int, p2: Int, p3: Int, data: String?
+): String? =
+ iccTransmitApduLogicalChannelBySlot.invoke(
+ this, slotId, channel, cla, instruction, p1, p2, p3, data
+ ) as String?
+
+private val requestEmbeddedSubscriptionInfoListRefresh: Method by lazy {
+ SubscriptionManager::class.java.getMethod("requestEmbeddedSubscriptionInfoListRefresh", Int::class.java)
+}
+
+fun SubscriptionManager.requestEmbeddedSubscriptionInfoListRefresh(cardId: Int): Unit {
+ requestEmbeddedSubscriptionInfoListRefresh.invoke(this, cardId)
}
\ No newline at end of file
diff --git a/libs/hidden-apis-stub/.gitignore b/libs/hidden-apis/.gitignore
similarity index 100%
rename from libs/hidden-apis-stub/.gitignore
rename to libs/hidden-apis/.gitignore
diff --git a/libs/hidden-apis-stub/build.gradle b/libs/hidden-apis/build.gradle
similarity index 100%
rename from libs/hidden-apis-stub/build.gradle
rename to libs/hidden-apis/build.gradle
diff --git a/libs/hidden-apis-stub/src/main/AndroidManifest.xml b/libs/hidden-apis/src/main/AndroidManifest.xml
similarity index 100%
rename from libs/hidden-apis-stub/src/main/AndroidManifest.xml
rename to libs/hidden-apis/src/main/AndroidManifest.xml
diff --git a/libs/hidden-apis-stub/src/main/java/android/service/euicc/DownloadSubscriptionResult.java b/libs/hidden-apis/src/main/java/android/service/euicc/DownloadSubscriptionResult.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/service/euicc/DownloadSubscriptionResult.java
rename to libs/hidden-apis/src/main/java/android/service/euicc/DownloadSubscriptionResult.java
diff --git a/libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccProfileInfo.java b/libs/hidden-apis/src/main/java/android/service/euicc/EuiccProfileInfo.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccProfileInfo.java
rename to libs/hidden-apis/src/main/java/android/service/euicc/EuiccProfileInfo.java
diff --git a/libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccService.java b/libs/hidden-apis/src/main/java/android/service/euicc/EuiccService.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccService.java
rename to libs/hidden-apis/src/main/java/android/service/euicc/EuiccService.java
diff --git a/libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java b/libs/hidden-apis/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
rename to libs/hidden-apis/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
diff --git a/libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java b/libs/hidden-apis/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
rename to libs/hidden-apis/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
diff --git a/libs/hidden-apis-stub/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java b/libs/hidden-apis/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java
rename to libs/hidden-apis/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java
diff --git a/libs/hidden-apis-stub/src/main/java/android/telephony/UiccAccessRule.java b/libs/hidden-apis/src/main/java/android/telephony/UiccAccessRule.java
similarity index 100%
rename from libs/hidden-apis-stub/src/main/java/android/telephony/UiccAccessRule.java
rename to libs/hidden-apis/src/main/java/android/telephony/UiccAccessRule.java
diff --git a/settings.gradle b/settings.gradle
index 661e47c..ce3d71f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -14,4 +14,4 @@ dependencyResolutionManagement {
}
rootProject.name = "OpenEUICC"
include ':app', ':libs:lpad-sm-dp-plus-connector'
-include ':libs:hidden-apis-stub'
+include ':libs:hidden-apis'