diff --git a/app/build.gradle b/app/build.gradle index f5bfd8a..08f3c98 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,8 +61,8 @@ android { //新平台正式 cube { flavorDimensions "default" - versionCode 30 - versionName "3.9" + versionCode 31 + versionName "4.0" /*********************************极光推送************************************/ manifestPlaceholders = [ XG_ACCESS_ID : "1500026372", diff --git a/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java b/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java index ba0a710..2808aea 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java @@ -33,6 +33,7 @@ import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.network.NetInterfaceManager; import com.aoleyun.sn.service.LogcatService; import com.aoleyun.sn.utils.ApkUtils; +import com.aoleyun.sn.utils.ForegroundAppUtil; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; import com.aoleyun.sn.utils.ServiceAliveUtils; @@ -85,6 +86,8 @@ public class SplashActivity extends AppCompatActivity { private void initView() { if (BuildConfig.DEBUG) { +// String jsonString = ApkUtils.getRunningAppInfo(this); +// Log.e(TAG, "initView: " + jsonString); ApkUtils.showAllAPP(this); // JGYUtils.getInstance().cleanBackgroundMemory(); // NetInterfaceManager.getInstance().uploadLogFile(); diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java index 366bcb0..787b11f 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java @@ -2,10 +2,14 @@ package com.aoleyun.sn.activity.main; import android.annotation.SuppressLint; import android.app.AlertDialog; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.IntentFilter; import android.graphics.Bitmap; import android.os.SystemClock; +import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; @@ -22,6 +26,7 @@ import com.aoleyun.sn.activity.requestlog.RequestLogActivity; import com.aoleyun.sn.base.BaseActivity; import com.aoleyun.sn.bean.StudentsInfo; import com.aoleyun.sn.comm.CommonConfig; +import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.service.main.MainService; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; @@ -50,6 +55,8 @@ import io.reactivex.rxjava3.disposables.Disposable; public class MainActivity extends BaseActivity implements MainAContact.MainView, NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = MainActivity.class.getSimpleName(); + public static final String UPDATE_LOCKED_STATUS = "UPDATE_LOCKED_STATUS"; + @BindView(R.id.imageView) ImageView head; @BindView(R.id.tv_devsn) @@ -244,6 +251,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, public void initData() { Log.e("getMacAddress", Utils.getAndroid10MAC(this)); startService(new Intent(MainActivity.this, MainService.class)); +// registerUpdateReceiver(); mMainAPresenter.getLockedState(); } @@ -406,6 +414,9 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, JGYUtils.startServices(MainActivity.this); NetworkUtils.unregisterNetworkStatusChangedListener(this); mMainAPresenter.detachView(); + if (mUpdateReceiver != null) { + unregisterReceiver(mUpdateReceiver); + } } @Override @@ -427,4 +438,37 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, finish(); } } + + UpdateReceiver mUpdateReceiver; + + private void registerUpdateReceiver() { + if (mUpdateReceiver == null) { + mUpdateReceiver = new UpdateReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction(UPDATE_LOCKED_STATUS); + } + } + + class UpdateReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + if (UPDATE_LOCKED_STATUS.equals(intent.getAction())) { + int locked = Settings.System.getInt(getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); + if (locked == JGYActions.FRAME_CODE_LOCKED) { + iv_locked.setVisibility(View.VISIBLE); + iv_locked.setImageDrawable(getDrawable(R.drawable.locked)); + SaveListUtils.getList(); + } else { + iv_locked.setVisibility(View.VISIBLE); + iv_locked.setImageDrawable(getDrawable(R.drawable.unlock)); + setNumberText("", View.GONE); + setNameText("", View.GONE); + setClassText("", View.GONE); + setBatchText("", View.GONE); + Glide.with(head).load(getDrawable(R.drawable.head)).into(head); + SysSettingUtils.setEnableSetting(MainActivity.this); + } + } + } + } } diff --git a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java index d5d7a48..2fd11d1 100644 --- a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java +++ b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java @@ -28,7 +28,7 @@ import java.io.Serializable; * 磁盘缓存帮助类 */ public class CacheHelper { - private static final String TAG = "DiskLruCacheHelper"; + private static final String TAG = CacheHelper.class.getSimpleName(); private MMKV mMMKV = MMKV.defaultMMKV(); diff --git a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java index edfa2c2..d9ba9a0 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -42,7 +42,6 @@ import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.disklrucache.CacheHelper; -import com.aoleyun.sn.disklrucache.DiskLruCacheHelper; import com.aoleyun.sn.manager.ConnectManager; import com.aoleyun.sn.manager.ConnectMode; import com.aoleyun.sn.network.api.get.CheckTestUpdateApi; @@ -127,11 +126,9 @@ import java.util.concurrent.TimeUnit; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observable; -import io.reactivex.rxjava3.core.ObservableSource; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.functions.BiFunction; -import io.reactivex.rxjava3.functions.Function; import io.reactivex.rxjava3.functions.Function5; import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.subjects.BehaviorSubject; @@ -158,7 +155,6 @@ public class NetInterfaceManager { private Context mContext; private Retrofit mRetrofit; private OkHttpClient okHttpClient; - private DiskLruCacheHelper mDiskLruCacheHelper; private MMKV mMMKV = MMKV.defaultMMKV(); private CacheHelper cacheHelper; diff --git a/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadIsLogApi.java b/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadIsLogApi.java index 94afea1..ca004cb 100644 --- a/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadIsLogApi.java +++ b/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadIsLogApi.java @@ -1,7 +1,6 @@ package com.aoleyun.sn.network.api.post; import com.aoleyun.sn.bean.BaseResponse; -import com.aoleyun.sn.bean.SnRunLog; import com.aoleyun.sn.network.UrlAddress; import java.util.Map; diff --git a/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadLogApi.java b/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadLogApi.java index 6afb471..e3b7cba 100644 --- a/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadLogApi.java +++ b/app/src/main/java/com/aoleyun/sn/network/api/post/GetUploadLogApi.java @@ -1,15 +1,12 @@ package com.aoleyun.sn.network.api.post; import com.aoleyun.sn.bean.BaseResponse; -import com.aoleyun.sn.bean.SnRunLog; import com.aoleyun.sn.network.UrlAddress; import java.util.Map; import io.reactivex.rxjava3.core.Observable; import okhttp3.MultipartBody; -import retrofit2.http.Field; -import retrofit2.http.FormUrlEncoded; import retrofit2.http.Multipart; import retrofit2.http.POST; import retrofit2.http.Part; @@ -18,7 +15,7 @@ import retrofit2.http.QueryMap; public interface GetUploadLogApi { @Multipart @POST(UrlAddress.UPLOAD_LOG_FILE) - Observable> GetSnRunLog( + Observable UploadLog( @QueryMap Map params, @Part MultipartBody.Part body ); diff --git a/app/src/main/java/com/aoleyun/sn/service/LogcatService.java b/app/src/main/java/com/aoleyun/sn/service/LogcatService.java index 3eee198..144db3a 100644 --- a/app/src/main/java/com/aoleyun/sn/service/LogcatService.java +++ b/app/src/main/java/com/aoleyun/sn/service/LogcatService.java @@ -263,30 +263,29 @@ public class LogcatService extends Service { } Map params = new HashMap<>(); params.put("sn", Utils.getSerial()); - MediaType mediaType = MediaType.Companion.parse("text/plain"); + MediaType mediaType = MediaType.Companion.parse("text/html"); RequestBody fileBody = RequestBody.Companion.create(file, mediaType); //设置一个file文件 MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), fileBody); NetInterfaceManager.getInstance().getUploadLogApi() - .GetSnRunLog(params, body) + .UploadLog(params, body) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer>() { + .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { Log.e("uploadFile", "onSubscribe: "); } @Override - public void onNext(BaseResponse snRunLogBaseResponse) { + public void onNext(BaseResponse snRunLogBaseResponse) { Log.e("uploadFile", "onNext: " + snRunLogBaseResponse); } @Override public void onError(Throwable e) { Log.e("uploadFile", "onError: " + e.getMessage()); - } @Override diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java index c6b2cb7..f2b91ac 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java @@ -40,6 +40,7 @@ import com.aoleyun.sn.BuildConfig; import com.aoleyun.sn.R; import com.aoleyun.sn.activity.checknet.CheckNetActivity; import com.aoleyun.sn.activity.main.MainAPresenter; +import com.aoleyun.sn.activity.main.MainActivity; import com.aoleyun.sn.bean.BaseResponse; import com.aoleyun.sn.bean.PoweroffBean; import com.aoleyun.sn.comm.CommonConfig; @@ -821,7 +822,10 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } else { ToastUtil.betaShow("设备已解锁"); SysSettingUtils.setEnableSetting(this); + mPresenter.checkAoleyunUpdate(); } + Intent intent = new Intent(MainActivity.UPDATE_LOCKED_STATUS); + sendBroadcast(intent); } @Override @@ -829,6 +833,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo if (noTag) { //没有批次就没有管控 Log.e(TAG, "setTagsFinish: " + "not set tag"); + mPresenter.getStudesInfo(true); } else { mPresenter.getDeviceBatch(); } @@ -1011,8 +1016,5 @@ public class MainService extends Service implements MainSContact.MainView, Netwo SPUtils.put(this, "is_screen_lock", false); SPUtils.put(this, "screen_tips", ""); } - mPresenter.getWiFiPasswd(); } - - } diff --git a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java index 54cbcb8..5e4b157 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java @@ -48,6 +48,7 @@ import java.util.Arrays; import java.util.Enumeration; import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.function.Predicate; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -1134,20 +1135,42 @@ public class ApkUtils { Log.e("addShortcut", "putstring:" + qch_force_app); } + private static Set AoleyunOSApp = new HashSet() {{ + this.add("com.aoleyun.info"); + this.add("com.aoleyun.os"); + this.add("com.aoleyun.sn"); + this.add("com.aoleyun.browser"); + this.add("com.aoleyun.appstore"); + this.add("com.aoleyunos.dop1"); + this.add("com.aoleyunos.dop2"); + this.add("com.aoleyunos.dop3"); + this.add("com.jiepier.filemanager"); + this.add("com.calendar.uiui"); + this.add("com.notepad.uiui"); + this.add("com.calculator.uiui"); + this.add("com.alarmclock.uiui"); + this.add("com.uiui.speed"); + }}; + public static String getRunningAppInfo(Context context) { - ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List infoList = activityManager.getRunningServices(Integer.MAX_VALUE); - ArrayList appList = new ArrayList(); //用来存储获取的应用信息数据 +// ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); +// List infoList = activityManager.getRunningServices(Integer.MAX_VALUE); + //用来存储获取的应用信息数据 + ArrayList appList = new ArrayList<>(); List packages = context.getPackageManager().getInstalledPackages(0); + String topPkg = ForegroundAppUtil.getForegroundPackageName(context); + Log.e(TAG, "getRunningAppInfo: " + topPkg); for (PackageInfo packageInfo : packages) { String packageName = packageInfo.packageName; //排除桌面app和出厂自带app - if (desktopAPP.contains(packageName) || factoryapp.contains(packageName) || aoleyunAPP.contains(packageName)) { + if (desktopAPP.contains(packageName) || factoryapp.contains(packageName)) { continue; } //排除所有系统应用,不显示 if (isSystemApp(context, packageName)) { - continue; + if (!AoleyunOSApp.contains(packageName)) { + continue; + } } else { //排除预装可以卸载的应用 if (canremove_systemapp.contains(packageName)) { @@ -1156,19 +1179,22 @@ public class ApkUtils { } UploadAppInfo uploadAppInfo = new UploadAppInfo(); uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString()); - uploadAppInfo.setPackage_name(packageInfo.packageName); - Log.e("getRunningAppInfo", "getRunningAppInfo:" + packageInfo.packageName); + uploadAppInfo.setPackage_name(packageName); + Log.e("getRunningAppInfo", "getRunningAppInfo:" + packageName); String firstInstallTime = TimeUtils.transferLongToDate(packageInfo.lastUpdateTime); uploadAppInfo.setInstall_time(firstInstallTime); uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode)); uploadAppInfo.setState(0); uploadAppInfo.setApp_size(getPackageSize(context, packageInfo.applicationInfo.publicSourceDir)); uploadAppInfo.setVersionName(packageInfo.versionName); - for (ActivityManager.RunningServiceInfo info : infoList) { - if (info.process.contains(packageInfo.packageName)) { - uploadAppInfo.setState(1); - Log.e("getRunningAppInfo", "getRunningAppInfo running: " + packageInfo.packageName); - } +// for (ActivityManager.RunningServiceInfo info : infoList) { +// if (info.process.contains(packageName)) { +// uploadAppInfo.setState(1); +// Log.e("getRunningAppInfo", "getRunningAppInfo running: " + packageName); +// } +// } + if (topPkg.equals(packageName)) { + uploadAppInfo.setState(1); } appList.add(uploadAppInfo); }