From 683b1595260e638d1d3c6cc0d6543a72f6d6f925 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 12 一月 2021 14:36:42 +0800
Subject: [PATCH] 扣分码标准化
---
lib/src/main/java/com/anyun/exam/lib/InstallUtil.java | 90 ++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 84 insertions(+), 6 deletions(-)
diff --git a/lib/src/main/java/com/anyun/exam/lib/InstallUtil.java b/lib/src/main/java/com/anyun/exam/lib/InstallUtil.java
index c2a0b8d..bbba352 100644
--- a/lib/src/main/java/com/anyun/exam/lib/InstallUtil.java
+++ b/lib/src/main/java/com/anyun/exam/lib/InstallUtil.java
@@ -1,9 +1,14 @@
package com.anyun.exam.lib;
+import android.Manifest;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.Settings;
import android.util.Log;
import java.io.ByteArrayOutputStream;
@@ -14,6 +19,10 @@
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Locale;
+
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.FileProvider;
public class InstallUtil {
public static final String TAG = InstallUtil.class.getCanonicalName();
@@ -144,23 +153,59 @@
try {
Log.d(TAG, "鍗囩骇app 鏂囦欢瀛樺湪 褰撳墠ver " + getVerCode() + " 褰撳墠Name " + getVerName() + " 鐩爣ver " + getVersionCodeFromApk(context, file.getAbsolutePath()) + " 鐩爣name " + getVersionNameFromApk(context, file.getAbsolutePath()));
-// Signature[] sig = getSignature();
-// Signature[] sig2 = getSignature(file.getAbsolutePath());
+ Signature[] sig = getSignature();
+ Signature[] sig2 = getSignature(file.getAbsolutePath());
- /*if ( getFingerprint(sig[0], "SHA-1").equals(getFingerprint(sig2[0], "SHA-1")))*/ {
- if ( getVerCode() <= getVersionCodeFromApk(context, file.getAbsolutePath()) ) {
+ if ( getFingerprint(sig[0], "SHA-1").equals(getFingerprint(sig2[0], "SHA-1"))) {
+ if ( getVerCode() < getVersionCodeFromApk(context, file.getAbsolutePath()) ||
+ (getVerCode() == getVersionCodeFromApk(context, file.getAbsolutePath()) &&
+ !getVerName().equals(getVersionNameFromApk(context, file.getAbsolutePath())))) {
Log.d(TAG, "瀹夎鏂囦欢 " + file.getAbsolutePath());
String result = execCommand("pm", "install", "-i", getPackageName(), "--user", "0", "-r", "-d", file.getAbsolutePath());
Log.d(TAG, "瀹夎缁撴灉 " + result);
} else {
file.delete();
}
- } /*else {
+ } else {
file.delete();
- }*/
+ }
} catch (Exception e) {
Log.e(TAG, "瀹夎鍙戠敓閿欒 " + e.getMessage());
}
+ }
+ }
+
+ public void InstallAppNormal(Context context, String path) {
+ File file = new File(path);
+ Log.d(TAG, "ManualInstall " + path);
+
+ if (file.exists() && file.isFile()) {
+ Signature[] sig = getSignature();
+ Signature[] sig2 = getSignature(file.getAbsolutePath());
+
+ if (getFingerprint(sig[0], "SHA-1").equals(getFingerprint(sig2[0], "SHA-1")) &&
+ (getVerCode() < getVersionCodeFromApk(context, file.getAbsolutePath()) ||
+ (getVerCode() == getVersionCodeFromApk(context, file.getAbsolutePath()) &&
+ !getVerName().equals(getVersionNameFromApk(context, file.getAbsolutePath()))))) {
+
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ Uri data;
+ String type = "application/vnd.android.package-archive";
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
+ data = Uri.fromFile(file);
+ } else {
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ String authority = context.getPackageName() + ".fileProvider";
+ data = FileProvider.getUriForFile(context, authority, file);
+ }
+ intent.setDataAndType(data, type);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ } else {
+ Log.d(TAG, "File illegal");
+ }
+ } else {
+ Log.d(TAG, "File not exist");
}
}
@@ -223,4 +268,37 @@
}
return result;
}
+
+/*
+ private void checkIsAndroidO() {
+ if (Build.VERSION.SDK_INT >= 26) {
+ if (context.getPackageManager().canRequestPackageInstalls()) {
+ mMainPresenter.installApk();
+ } else {
+ //璇锋眰瀹夎鏈煡搴旂敤鏉ユ簮鐨勬潈闄�
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.REQUEST_INSTALL_PACKAGES},INSTALL_PACKAGES_REQUEST_CODE);
+ }
+ } else {
+ mMainPresenter.installApk();
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ switch (requestCode) {
+ case INSTALL_PACKAGES_REQUEST_CODE:
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ mMainPresenter.installApk();
+ } else {
+ // 寮曞鐢ㄦ埛鎵嬪姩寮�鍚畨瑁呮潈闄�
+ Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
+ startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES);
+ }
+ break;
+ default:
+ break;
+
+ }
+ }*/
}
--
Gitblit v1.8.0