Do not crash on app uninstall

Immediately after an app uninstall, the associated App will be updated
by a call to reset() in the AppObserver.onChange().

But before receiving this event, the activity and the fragments resume,
leading to a call to getInstalledStatus(…). At this stage, we don't know
that the app has been removed yet, but the package manager already
removed it. Therefore, PackageManager.getInstallerPackageName(…) throws
an IllegalArgumentException.

In that case, consider that the application has been uninstalled.

Should fix issue #167
https://gitlab.com/fdroid/fdroidclient/issues/167
This commit is contained in:
Romain Vimont 2015-03-11 18:12:02 +01:00
parent 4a5d732c01
commit 89bedfda13

View File

@ -184,7 +184,13 @@ public class AppDetails extends ActionBarActivity implements ProgressListener, A
return getString(R.string.inst);
}
// Installed the same version, but from someplace else.
final String installerPkgName = mPm.getInstallerPackageName(app.id);
final String installerPkgName;
try {
installerPkgName = mPm.getInstallerPackageName(app.id);
} catch (IllegalArgumentException e) {
Log.w(TAG, "Application " + app.id + " is not installed anymore");
return getString(R.string.not_inst);
}
if (installerPkgName != null && installerPkgName.length() > 0) {
final String installerLabel = InstalledAppProvider
.getApplicationLabel(mctx, installerPkgName);