|
|
@@ -104,11 +104,12 @@ public class ApkUtils {
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
.subscribe(new AbsObserver<ApkFileInfo>() {
|
|
|
private boolean doneNext;
|
|
|
+
|
|
|
@Override
|
|
|
public void onComplete() {
|
|
|
- if(doneNext)
|
|
|
+ if (doneNext)
|
|
|
return;
|
|
|
- if(apkFileInfo.isAppInstalled()){//在onNext中未处理且应用已经安装的情况下,直接打开应用
|
|
|
+ if (apkFileInfo.isAppInstalled()) {//在onNext中未处理且应用已经安装的情况下,直接打开应用
|
|
|
PackageUtil.startApp(context, apkFileInfo.getPackageName());
|
|
|
} else {//有些手机会进入这里,很奇怪,暂未复现,直接安装吧
|
|
|
checkAndInstall(apkFileInfo);
|
|
|
@@ -125,10 +126,13 @@ public class ApkUtils {
|
|
|
doneNext = true;
|
|
|
checkAndInstall(item);
|
|
|
}
|
|
|
- private void checkAndInstall(ApkFileInfo item){
|
|
|
+
|
|
|
+ private void checkAndInstall(ApkFileInfo item) {
|
|
|
if (!item.isAppInstalled() || (item.isEqualsSignMd5() && item.isCanInstallVersion())) {
|
|
|
PackageUtil.installApk(context, item.getPath());
|
|
|
- DataUtil.putAsString(DataKey.KEY_INSTALL_APK_PACKAGE_NAME, item.getPackageName());
|
|
|
+ if (item.getPackageName() != null) {
|
|
|
+ DataUtil.putAsString(DataKey.KEY_INSTALL_APK_PACKAGE_NAME, item.getPackageName());
|
|
|
+ }
|
|
|
} else {//签名不同,则提示卸载
|
|
|
ViewUtil.showMsgDialog(SheepApp.getInstance(), new DialogConfig()
|
|
|
.setTitle("提示").setMsg("需要卸载当前应用才能继续安装,是否继续").setBtnLeftText("不用了")
|
|
|
@@ -193,7 +197,7 @@ public class ApkUtils {
|
|
|
public static String getSignMd5(PackageInfo packageInfo) {
|
|
|
Signature[] signs = packageInfo.signatures;
|
|
|
Signature sign = signs[0];
|
|
|
- return encryptionMD5(sign.toByteArray());
|
|
|
+ return encryptionMD5(sign.toByteArray());
|
|
|
}
|
|
|
|
|
|
/**
|