diff --git a/app/build.gradle b/app/build.gradle index 72a1e2d..689687e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'kotlin-android' apply plugin: "com.tencent.android.tpns" def appName() { - return "ZYAppStore" + return "CubeZYAppStore" } def releaseTime() { @@ -18,8 +18,8 @@ android { minSdkVersion 26 targetSdkVersion 29 - versionCode 5 - versionName "1.1.3" + versionCode 10 + versionName "1.1.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/uiui/zyappstore/activity/MainActivity.java b/app/src/main/java/com/uiui/zyappstore/activity/MainActivity.java index 44f2dbd..42bedbf 100644 --- a/app/src/main/java/com/uiui/zyappstore/activity/MainActivity.java +++ b/app/src/main/java/com/uiui/zyappstore/activity/MainActivity.java @@ -69,6 +69,7 @@ public class MainActivity extends BaseActivity { Log.e(TAG, "onCreate"); startService(new Intent(MainActivity.this, DownloadService.class)); starService(); + JGYUtils.getInstance().checkLocalExternalFiles(); } @Override diff --git a/app/src/main/java/com/uiui/zyappstore/service/main/MainService.java b/app/src/main/java/com/uiui/zyappstore/service/main/MainService.java index 8cabc2b..6764693 100644 --- a/app/src/main/java/com/uiui/zyappstore/service/main/MainService.java +++ b/app/src/main/java/com/uiui/zyappstore/service/main/MainService.java @@ -95,6 +95,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo file.mkdirs(); } mPresenter.getSnTag(); + JGYUtils.getInstance().checkLocalExternalFiles(); } @Override diff --git a/app/src/main/java/com/uiui/zyappstore/utils/ApkUtils.java b/app/src/main/java/com/uiui/zyappstore/utils/ApkUtils.java index 945d286..33d87b6 100644 --- a/app/src/main/java/com/uiui/zyappstore/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/zyappstore/utils/ApkUtils.java @@ -803,10 +803,32 @@ public class ApkUtils { public static HashSet ownApp = new HashSet() {{ this.add(BuildConfig.APPLICATION_ID); this.add("com.android.uiuios"); + this.add("com.safe.uiui"); + this.add("com.uiuios.aios"); + this.add("com.uiuios.sn"); + this.add("com.uiuios.appstore"); + this.add("com.uiuios.browser"); + this.add("com.uiui.aios"); + this.add("com.uiui.sn"); + this.add("com.uiui.appstore"); + this.add("com.uiui.browser"); + this.add("com.aoleyun.os"); + this.add("com.aoleyun.sn"); + this.add("com.aoleyun.appstore"); + this.add("com.aoleyun.browser"); + this.add("com.aoleyun.info"); + this.add("com.aoleyunos.dop1"); + this.add("com.aoleyunos.dop2"); + this.add("com.aoleyunos.diy"); + this.add("com.teclast.zyos"); + this.add("com.teclast.zy"); + this.add("com.teclast.zyappstore"); + this.add("com.teclast.zybrowser"); this.add("com.uiui.zyos"); + this.add("com.uiui.zy"); + this.add("com.uiui.zyappstore"); this.add("com.uiui.zybrowser"); this.add("com.uiui.zysn"); - this.add("com.uiui.aios"); - this.add("com.safe.uiui"); + this.add("com.uiui.calendar"); }}; } diff --git a/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java b/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java index acc8fa8..bbcb6ce 100644 --- a/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java +++ b/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java @@ -20,16 +20,29 @@ import android.util.Log; import androidx.core.content.ContextCompat; +import com.blankj.utilcode.util.FileUtils; import com.uiui.zyappstore.BuildConfig; import com.uiui.zyappstore.receiver.BootReceiver; import java.io.File; +import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.LinkedHashSet; +import java.util.List; +import java.util.function.BiConsumer; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; public class JGYUtils { @@ -438,4 +451,123 @@ public class JGYUtils { //true为打开,false为关闭 return powerManager.isInteractive(); } + + public List externalPkg = new ArrayList() {{ + this.add("com.aoleyun.appstore"); + this.add("com.aoleyun.browser"); + this.add("com.aoleyun.sn"); + this.add("com.aoleyun.info"); + + this.add("com.qi.studycomputer.launcher"); + this.add("com.wyt.evaluating"); + this.add("com.qi.childsystem.launcher"); + this.add("com.qi.TFSystem"); + this.add("com.yixuetong.user"); + this.add("com.wyt.tongbuyouxue"); + this.add("air.wyt.modloader"); + + this.add("com.alibaba.android.rimet"); + this.add("com.tencent.wemeet.app"); + }}; + + private static final String AOLE_DIR = "aole"; + public HashMap mPackageListMap = new HashMap<>(); + + public void checkLocalExternalFiles() { + File[] externalFiles = mContext.getExternalFilesDirs(null); + Log.e(TAG, "checkLocalAppInstall: externalFiles = " + Arrays.toString(externalFiles)); + + String SdPath = Environment.getExternalStorageDirectory().getAbsolutePath(); + Log.e(TAG, "checkLocalAppInstall: SdPath = " + SdPath); + String aolePath = SdPath + File.separator + AOLE_DIR; + File file = new File(aolePath); + String[] apkName = file.list(); + if (apkName == null || apkName.length == 0) { + Log.e(TAG, "checkLocalAppInstall: apkName is empty"); + } else { + Observable.create(new ObservableOnSubscribe>() { + @Override + public void subscribe(@NonNull ObservableEmitter> emitter) throws Throwable { + HashMap packageListMap = new HashMap<>(); + for (String fileName : apkName) { + String apkPath = aolePath + File.separator + fileName; + Log.e(TAG, "subscribe: " + apkPath); + String pkg = ApkUtils.getPackageName(mContext, apkPath); +// if (externalPkg.contains(pkg)) { + packageListMap.put(pkg, apkPath); +// } else { +// Log.e(TAG, "checkLocalAppInstall: skip: " + pkg + " fileName: " + fileName); +// } + } + mPackageListMap = packageListMap; + emitter.onNext(packageListMap); + } + }).subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("checkLocalAppInstall", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull HashMap stringStringHashMap) { + Log.e("checkLocalAppInstall", "onNext: " + stringStringHashMap); + stringStringHashMap.forEach(new BiConsumer() { + @Override + public void accept(String key, String value) { + if (ApkUtils.isAvailable(mContext, key)) { + Log.e("checkLocalAppInstall", "accept: installed: " + key); + } else { +// copyFile(value); + ApkUtils.installApp(mContext, value); + } + } + }); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("checkLocalAppInstall", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("checkLocalAppInstall", "onComplete: "); + + } + }); + } + } + + private void copyFile(String filePath) { + Log.e(TAG, "copyFile: " + filePath); + File file = new File(filePath); + String fileName = file.getName(); + String newFilePath = getDownLoadPath() + fileName; + File newFile = new File(newFilePath); + String fileMD5 = com.blankj.utilcode.util.FileUtils.getFileMD5ToString(file); + String newFileMD5 = FileUtils.getFileMD5ToString(newFile); + if (newFile.exists()) { + if (fileMD5.equals(newFileMD5)) { +// AdminManager.getInstance().installPackage(newFilePath); + } else { + newFile.delete(); + try { + Files.copy(file.toPath(), newFile.toPath()); +// AdminManager.getInstance().installPackage(newFilePath); + } catch (IOException e) { + e.printStackTrace(); + Log.e("Files.copy", "IOException:" + e.getMessage()); + } + } + } else { + try { + Files.copy(file.toPath(), newFile.toPath()); +// AdminManager.getInstance().installPackage(newFilePath); + } catch (IOException e) { + e.printStackTrace(); + Log.e("Files.copy", "IOException:" + e.getMessage()); + } + } + } } diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 9b06c7c..3e98f6e 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 9b06c7c..3e98f6e 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 9b06c7c..3e98f6e 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 9b06c7c..3e98f6e 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 9b06c7c..3e98f6e 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ