Another NPE fixed. Apparently, some installed apps might have no version string

This commit is contained in:
Sergey Eremin
2017-07-24 02:13:12 +03:00
parent af6a55f08b
commit 45e55e724a
3 changed files with 49 additions and 38 deletions

View File

@@ -78,7 +78,7 @@ public class DetailsActivity extends YalpStoreActivity {
redrawDetails(DetailsActivity.app);
}
DetailsTask task = getDetailsTask(packageName);
GetAndRedrawDetailsTask task = getDetailsTask(packageName);
task.setTaskClone(getDetailsTask(packageName));
task.execute();
}
@@ -163,21 +163,29 @@ public class DetailsActivity extends YalpStoreActivity {
downloadOptionsFragment.draw();
}
private DetailsTask getDetailsTask(String packageName) {
DetailsTask task = new DetailsTask() {
@Override
protected void onPostExecute(Throwable e) {
super.onPostExecute(e);
if (this.app != null) {
DetailsActivity.app = this.app;
redrawDetails(this.app);
}
}
};
private GetAndRedrawDetailsTask getDetailsTask(String packageName) {
GetAndRedrawDetailsTask task = new GetAndRedrawDetailsTask(this);
task.setPackageName(packageName);
task.setContext(this);
task.setProgressIndicator(findViewById(R.id.progress));
return task;
}
static class GetAndRedrawDetailsTask extends DetailsTask {
private DetailsActivity activity;
public GetAndRedrawDetailsTask(DetailsActivity activity) {
this.activity = activity;
}
@Override
protected void onPostExecute(Throwable e) {
super.onPostExecute(e);
if (this.app != null) {
DetailsActivity.app = this.app;
activity.redrawDetails(this.app);
}
}
}
}

View File

@@ -26,7 +26,7 @@ public class DirectDownloadActivity extends YalpStoreActivity {
return;
}
Log.i(getClass().getName(), "Getting package " + packageName);
DetailsTask task = getDetailsTask(packageName);
DetailsAndPurchaseTask task = getDetailsTask(packageName);
task.setTaskClone(getDetailsTask(packageName));
task.execute();
finish();
@@ -46,33 +46,13 @@ public class DirectDownloadActivity extends YalpStoreActivity {
}
}
private DetailsTask getDetailsTask(final String packageName) {
DetailsTask task = new DetailsTask() {
@Override
protected void onPostExecute(Throwable result) {
Throwable e = result;
if (result instanceof RuntimeException && null != result.getCause()) {
e = result.getCause();
}
if (null == e) {
getPurchaseTask(app).execute();
} else {
DetailsActivity.start(context, packageName);
}
}
};
private DetailsAndPurchaseTask getDetailsTask(final String packageName) {
DetailsAndPurchaseTask task = new DetailsAndPurchaseTask();
task.setPackageName(packageName);
task.setContext(this);
return task;
}
private PurchaseTask getPurchaseTask(App app) {
PurchaseTask task = new PurchaseTask();
task.setApp(app);
task.setContext(this);
return task;
}
private boolean checkPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
@@ -80,4 +60,27 @@ public class DirectDownloadActivity extends YalpStoreActivity {
}
return true;
}
static class DetailsAndPurchaseTask extends DetailsTask {
@Override
protected void onPostExecute(Throwable result) {
Throwable e = result;
if (result instanceof RuntimeException && null != result.getCause()) {
e = result.getCause();
}
if (null == e) {
getPurchaseTask(app).execute();
} else {
DetailsActivity.start(context, packageName);
}
}
private PurchaseTask getPurchaseTask(App app) {
PurchaseTask task = new PurchaseTask();
task.setApp(app);
task.setContext(context);
return task;
}
}
}

View File

@@ -111,10 +111,10 @@ public class GeneralDetails extends Abstract {
}
try {
PackageInfo info = activity.getPackageManager().getPackageInfo(app.getPackageName(), 0);
if (info.versionCode == app.getVersionCode()) {
String currentVersion = info.versionName;
if (info.versionCode == app.getVersionCode() || null == currentVersion) {
return;
}
String currentVersion = info.versionName;
String newVersion = versionName;
if (currentVersion.equals(newVersion)) {
currentVersion += " (" + info.versionCode;