d4rken-org / sdmaid

SD Maid is an Android app that helps you manage files and apps.
https://play.google.com/store/apps/details?id=eu.thedarken.sdm
1.52k stars 748 forks source link

NPE if the app is uninstalled without SD Maid and we are working on stale data #1144

Closed d4rken closed 1 year ago

d4rken commented 7 years ago

If you we load the apps in AppControl, then uninstall app A and then in work (e.g. kill) on app A in SD Maid without refreshing the data, we crash with an NPE.

d4rken commented 7 years ago
java.lang.IllegalStateException: Trying to clear app that is no longer installed
        at eu.thedarken.sdm.appcontrol.core.modules.uninstaller.UninstallModule.resetApp(UninstallModule.java:289)
        at eu.thedarken.sdm.appcontrol.core.modules.uninstaller.UninstallModule.processReset(UninstallModule.java:124)
        at eu.thedarken.sdm.appcontrol.core.modules.uninstaller.UninstallModule.process(UninstallModule.java:62)
        at eu.thedarken.sdm.appcontrol.core.modules.uninstaller.UninstallModule.process(UninstallModule.java:43)
        at eu.thedarken.sdm.appcontrol.core.AppControlWorker.onNewTask(AppControlWorker.java:42)
        at eu.thedarken.sdm.appcontrol.core.AppControlWorker.onNewTask(AppControlWorker.java:99)
        at eu.thedarken.sdm.tools.worker.AbstractWorker.process(AbstractWorker.java:228)
        at eu.thedarken.sdm.tools.worker.WorkerHub$Processor.run(WorkerHub.java:206)
        at eu.thedarken.sdm.ThreadOverlord.lambda$postTask$1(ThreadOverlord.java:142)
        at eu.thedarken.sdm.ThreadOverlord.postTask(ThreadOverlord.java:142)
        at eu.thedarken.sdm.v.run(Unknown:-1)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at eu.thedarken.sdm.SDMThreadFactory.lambda$newThread$0(SDMThreadFactory.java:51)
        at eu.thedarken.sdm.p.run(Unknown:-1)
        at java.lang.Thread.run(Thread.java:818)
java.lang.NullPointerException
        at eu.thedarken.sdm.tools.Preconditions.checkNotNull(Preconditions.java:15)
        at eu.thedarken.sdm.appcontrol.ui.details.main.PermissionAppCard.inject(PermissionAppCard.java:52)
        at eu.thedarken.sdm.appcontrol.ui.details.main.AppObjectAdapter.onBindSDMViewHolder(AppObjectAdapter.java:46)
        at eu.thedarken.sdm.ui.recyclerview.SDMRecyclerViewAdapter.onBindViewHolder(SDMRecyclerViewAdapter.java:16)
        at eu.thedarken.sdm.ui.recyclerview.SDMRecyclerViewAdapter.onBindViewHolder(SDMRecyclerViewAdapter.java:48)
java.lang.NullPointerException: Attempt to read from field 'java.lang.String android.content.pm.PackageInfo.versionName' on a null object reference
        at eu.thedarken.sdm.appcontrol.ui.details.main.InfoAppCard.inject(InfoAppCard.java:52)
        at eu.thedarken.sdm.appcontrol.core.AppObject.getVersionName(AppObject:93)
        at eu.thedarken.sdm.appcontrol.ui.details.main.AppObjectAdapter.onBindSDMViewHolder(AppObjectAdapter.java:46)
        at eu.thedarken.sdm.ui.recyclerview.SDMRecyclerViewAdapter.onBindViewHolder(SDMRecyclerViewAdapter.java:16)
        at eu.thedarken.sdm.ui.recyclerview.SDMRecyclerViewAdapter.onBindViewHolder(SDMRecyclerViewAdapter.java:48)
java.lang.NullPointerException: Attempt to read from field 'android.content.pm.ApplicationInfo android.content.pm.PackageInfo.applicationInfo' on a null object reference
        at eu.thedarken.sdm.appcontrol.core.AppObject.isSystemPackage(AppObject.java:77)
        at eu.thedarken.sdm.appcontrol.ui.details.main.StateAppCard.inject(StateAppCard.java:73)
        at eu.thedarken.sdm.appcontrol.ui.details.main.StateAppCard$ViewHolder.bind(StateAppCard$ViewHolder:41)
        at eu.thedarken.sdm.appcontrol.ui.details.main.AppObjectAdapter.onBindSDMViewHolder(AppObjectAdapter.java:46)
        at eu.thedarken.sdm.ui.recyclerview.SDMRecyclerViewAdapter.onBindViewHolder(SDMRecyclerViewAdapter.java:16)
        at eu.thedarken.sdm.ui.recyclerview.SDMRecyclerViewAdapter.onBindViewHolder(SDMRecyclerViewAdapter.java:48)