For security purpose, we are just querying over the installed apps on the android device to make sure malicious apps are not present.
Following is the code(pseudo) I am using to do that:
suspend fun getInstalledApplicationAsync(...) {
val appList : MutableList<ApplicationsItemRequest> = mutableListOf()
val apps = packageManager?.getInstalledApplications(0)
val installedApps = ArrayList<ApplicationInfo>()
apps?.forEachIndexed{ index, element ->
// line as per logs causing ANR
val label = packageManager.getApplicationLabel(element)
}
}
Main thread dump:
#00 pc 0x0000000000086f8c /apex/com.android.runtime/lib64/bionic/libc.so (syscall)
#01 pc 0x00000000001b089c /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*))
#02 pc 0x00000000006757c8 /apex/com.android.art/lib64/libart.so (art::GoToRunnable(art::Thread*))
#03 pc 0x00000000006755a4 /apex/com.android.art/lib64/libart.so (art::JniMethodEnd(unsigned int, art::Thread*))
at android.content.res.ApkAssets.nativeLoad (ApkAssets.java)
at android.content.res.ApkAssets.<init> (ApkAssets.java:291)
at android.content.res.ApkAssets.loadFromPath (ApkAssets.java:140)
at android.app.ResourcesManager.loadApkAssets (ResourcesManager.java:400)
at android.app.ResourcesManager.createAssetManager (ResourcesManager.java:429)
at android.app.ResourcesManager.createResourcesImpl (ResourcesManager.java:569)
at android.app.ResourcesManager.findOrCreateResourcesImplForKeyLocked (ResourcesManager.java:609)
at android.app.ResourcesManager.createResources (ResourcesManager.java:861)
at android.app.ResourcesManager.getResources (ResourcesManager.java:930)
at android.app.ActivityThread.getTopLevelResources (ActivityThread.java:2476)
at android.app.ApplicationPackageManager.getResourcesForApplication (ApplicationPackageManager.java:1726)
at android.app.ApplicationPackageManager.getText (ApplicationPackageManager.java:2068)
at android.content.pm.PackageItemInfo.loadUnsafeLabel (PackageItemInfo.java:237)
at android.content.pm.PackageItemInfo.loadLabel (PackageItemInfo.java:227)
at android.app.ApplicationPackageManager.getApplicationLabel (ApplicationPackageManager.java:2113)
at com.awantunai.appsintalledscrap.InstalledAppsScrapKt.getInstalledApplication (InstalledAppsScrap.kt:21)
at com.awantunai.app.home.HomeActivity.sendDeviceInfo (HomeActivity.kt:630)
at com.awantunai.app.home.HomeActivity.access$getSentianceHelper$p (HomeActivity.kt:74)
at com.awantunai.app.home.HomeActivity$scrapingData$1.invoke (HomeActivity.kt:724)
at com.awantunai.app.home.HomeActivity$scrapingData$1.invoke (HomeActivity.kt:695)
at com.awantunai.app.base.BaseForegroundPermissionActivity.checkLocationPermission (BaseForegroundPermissionActivity.kt:29)
at com.awantunai.app.home.HomeActivity.scrapingData (HomeActivity.kt:695)
at com.awantunai.app.home.HomeActivity.access$getSentianceHelper$p (HomeActivity.kt:74)
at com.awantunai.app.home.HomeActivity$trackFirebaseMetrics$1.getAdvertisingId (HomeActivity.kt:616)
at com.awantunai.app.firebase_metrics.MetricsHelper.getAdvertisingId$lambda-3 (MetricsHelper.kt:70)
at com.awantunai.app.firebase_metrics.MetricsHelper.$r8$lambda$_IVzcbSqayTNLYAy_gCjSKhIVq0 (MetricsHelper.kt)
at com.awantunai.app.firebase_metrics.MetricsHelper$$InternalSyntheticLambda$0$eddb0619a7799f2150ffad3290d73b18e91025cadf7c2380a0e2d22df46ca8c3$1.accept (MetricsHelper.java)
at io.reactivex.internal.observers.LambdaObserver.onNext (LambdaObserver.java:63)
at io.reactivex.internal.operators.observable.ObservableOnErrorNext$OnErrorNextObserver.onNext (ObservableOnErrorNext.java:68)
at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal (ObservableObserveOn.java:201)
at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run (ObservableObserveOn.java:255)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run (HandlerScheduler.java:119)
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:257)
at android.app.ActivityThread.main (ActivityThread.java:8192)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:626)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1015)