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:
parent
4a5d732c01
commit
89bedfda13
@ -184,7 +184,13 @@ public class AppDetails extends ActionBarActivity implements ProgressListener, A
|
|||||||
return getString(R.string.inst);
|
return getString(R.string.inst);
|
||||||
}
|
}
|
||||||
// Installed the same version, but from someplace else.
|
// 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) {
|
if (installerPkgName != null && installerPkgName.length() > 0) {
|
||||||
final String installerLabel = InstalledAppProvider
|
final String installerLabel = InstalledAppProvider
|
||||||
.getApplicationLabel(mctx, installerPkgName);
|
.getApplicationLabel(mctx, installerPkgName);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user