ANR is caused when querying installed application names from app

177 Views Asked by At

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)
0

There are 0 best solutions below