From 00d66155ed0c965d46c3c59ad098882f07da8328 Mon Sep 17 00:00:00 2001 From: tanwenkang Date: Sun, 8 Feb 2026 17:37:49 +0800 Subject: [PATCH] Try next provider if the previous one return no result. --- .../identifier/app/main/MainManager.kt | 31 ++++++++++--------- app/src/main/res/layout/activity_main.xml | 2 +- .../identifier/internal/SerialRunnable.kt | 8 ++--- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/phantomvk/identifier/app/main/MainManager.kt b/app/src/main/java/com/phantomvk/identifier/app/main/MainManager.kt index 31d586e..5622293 100644 --- a/app/src/main/java/com/phantomvk/identifier/app/main/MainManager.kt +++ b/app/src/main/java/com/phantomvk/identifier/app/main/MainManager.kt @@ -36,37 +36,40 @@ object MainManager { } val latch = CountDownLatch(1) + val simpleName = (provider as Any).javaClass.simpleName + val nanoTime = System.nanoTime() val resultCallback = object : Consumer { - private val simpleName = (provider as Any).javaClass.simpleName - private val startNanoTime = System.nanoTime() override fun onSuccess(result: IdentifierResult) { - list.add(ResultDetail(simpleName, result, getNanoTimeStamp())) + list.add(ResultDetail(simpleName, result, getNanoTimeStamp(nanoTime))) latch.countDown() } override fun onError(msg: String, throwable: Throwable?) { - list.add(ResultDetail(simpleName, null, getNanoTimeStamp(), msg)) + list.add(ResultDetail(simpleName, null, getNanoTimeStamp(nanoTime), msg)) latch.countDown() } - - private fun getNanoTimeStamp(): String { - val consumed = (System.nanoTime() - startNanoTime) / 1000L - return decimalFormat.format(consumed) - } } setCallbackMethod.invoke(provider, resultCallback) - runMethod.invoke(provider) + + try { + runMethod.invoke(provider) + } catch (t: Throwable) { + list.add(ResultDetail(simpleName, null, getNanoTimeStamp(nanoTime), t.toString())) + latch.countDown() + } + latch.await() } return list } - private fun getProviderList(): List<*> { -// val application = Class.forName("android.app.ActivityThread") -// .getMethod("currentApplication") -// .invoke(null) as Application + private fun getNanoTimeStamp(time: Long): String { + val consumed = (System.nanoTime() - time) / 1000L + return decimalFormat.format(consumed) + } + private fun getProviderList(): List<*> { val c = Class.forName("com.phantomvk.identifier.model.ProviderConfig") val config = c.getConstructor(Context::class.java).newInstance(Application.applicationInstance) c.getMethod("setAsyncCallback", Boolean::class.java).invoke(config, Settings.AsyncCallback.getValue()) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 924f81e..7958edf 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -63,6 +63,6 @@ android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:textColor="#FF000000" - android:textSize="14sp" + android:textSize="12sp" android:textStyle="bold" /> \ No newline at end of file diff --git a/library/src/main/java/com/phantomvk/identifier/internal/SerialRunnable.kt b/library/src/main/java/com/phantomvk/identifier/internal/SerialRunnable.kt index caa399a..5015c37 100644 --- a/library/src/main/java/com/phantomvk/identifier/internal/SerialRunnable.kt +++ b/library/src/main/java/com/phantomvk/identifier/internal/SerialRunnable.kt @@ -14,7 +14,6 @@ import com.phantomvk.identifier.provider.AsusProvider import com.phantomvk.identifier.provider.CoolpadServiceProvider import com.phantomvk.identifier.provider.CoolpadSettingsProvider import com.phantomvk.identifier.provider.CooseaProvider -import com.phantomvk.identifier.provider.EXCEPTION_THROWN import com.phantomvk.identifier.provider.FreemeProvider import com.phantomvk.identifier.provider.GoogleAdsIdProvider import com.phantomvk.identifier.provider.HonorSdkProvider @@ -135,8 +134,8 @@ internal class SerialRunnable( getConsumer().onSuccess(result) } - override fun onError(msg: String, throwable: Throwable?) { - Log.e("SerialRunnable", "${provider.javaClass.simpleName} onError.", throwable) + override fun onError(msg: String, t: Throwable?) { + Log.e("SerialRunnable", "${provider.javaClass.simpleName} onError.", t) execute(index + 1, providers) } }) @@ -145,7 +144,8 @@ internal class SerialRunnable( try { provider.run() } catch (t: Throwable) { - getConsumer().onError(EXCEPTION_THROWN, t) + Log.e("SerialRunnable", "${provider.javaClass.simpleName} onRun.", t) + execute(index + 1, providers) } }