diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 59d8ad0..e87380b 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -4,6 +4,8 @@
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index d051337..d06202a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,11 +13,10 @@
-
+
-
diff --git a/app/build.gradle b/app/build.gradle
index bf861c2..3476b70 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,7 +36,7 @@ android {
}
dependencies {
- compileOnly project(":libs:hidden-apis")
+ compileOnly project(':libs:hidden-apis-stub')
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
new file mode 100644
index 0000000..1bc0121
--- /dev/null
+++ b/app/src/main/java/im/angry/openeuicc/util/TelephonyManagerHiddenApi.kt
@@ -0,0 +1,53 @@
+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 05c31e7..28b9623 100644
--- a/app/src/main/java/im/angry/openeuicc/util/TelephonyUtils.kt
+++ b/app/src/main/java/im/angry/openeuicc/util/TelephonyUtils.kt
@@ -1,10 +1,8 @@
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
@@ -23,49 +21,4 @@ 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/.gitignore b/libs/hidden-apis-stub/.gitignore
similarity index 100%
rename from libs/hidden-apis/.gitignore
rename to libs/hidden-apis-stub/.gitignore
diff --git a/libs/hidden-apis/build.gradle b/libs/hidden-apis-stub/build.gradle
similarity index 100%
rename from libs/hidden-apis/build.gradle
rename to libs/hidden-apis-stub/build.gradle
diff --git a/libs/hidden-apis/src/main/AndroidManifest.xml b/libs/hidden-apis-stub/src/main/AndroidManifest.xml
similarity index 100%
rename from libs/hidden-apis/src/main/AndroidManifest.xml
rename to libs/hidden-apis-stub/src/main/AndroidManifest.xml
diff --git a/libs/hidden-apis/src/main/java/android/service/euicc/DownloadSubscriptionResult.java b/libs/hidden-apis-stub/src/main/java/android/service/euicc/DownloadSubscriptionResult.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/service/euicc/DownloadSubscriptionResult.java
rename to libs/hidden-apis-stub/src/main/java/android/service/euicc/DownloadSubscriptionResult.java
diff --git a/libs/hidden-apis/src/main/java/android/service/euicc/EuiccProfileInfo.java b/libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccProfileInfo.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/service/euicc/EuiccProfileInfo.java
rename to libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccProfileInfo.java
diff --git a/libs/hidden-apis/src/main/java/android/service/euicc/EuiccService.java b/libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccService.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/service/euicc/EuiccService.java
rename to libs/hidden-apis-stub/src/main/java/android/service/euicc/EuiccService.java
diff --git a/libs/hidden-apis/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java b/libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
rename to libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
diff --git a/libs/hidden-apis/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java b/libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
rename to libs/hidden-apis-stub/src/main/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
diff --git a/libs/hidden-apis/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java b/libs/hidden-apis-stub/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java
rename to libs/hidden-apis-stub/src/main/java/android/service/euicc/GetEuiccProfileInfoListResult.java
diff --git a/libs/hidden-apis/src/main/java/android/telephony/UiccAccessRule.java b/libs/hidden-apis-stub/src/main/java/android/telephony/UiccAccessRule.java
similarity index 100%
rename from libs/hidden-apis/src/main/java/android/telephony/UiccAccessRule.java
rename to libs/hidden-apis-stub/src/main/java/android/telephony/UiccAccessRule.java
diff --git a/settings.gradle b/settings.gradle
index ce3d71f..661e47c 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'
+include ':libs:hidden-apis-stub'