version:4.0

fix:修复日志上传错误
update:正在运行的app显示奥乐云系列应用
This commit is contained in:
2022-04-13 10:37:36 +08:00
parent 297f33bf2d
commit 0a75344b61
10 changed files with 98 additions and 32 deletions

View File

@@ -61,8 +61,8 @@ android {
//新平台正式 //新平台正式
cube { cube {
flavorDimensions "default" flavorDimensions "default"
versionCode 30 versionCode 31
versionName "3.9" versionName "4.0"
/*********************************极光推送************************************/ /*********************************极光推送************************************/
manifestPlaceholders = [ manifestPlaceholders = [
XG_ACCESS_ID : "1500026372", XG_ACCESS_ID : "1500026372",

View File

@@ -33,6 +33,7 @@ import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.network.NetInterfaceManager; import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.service.LogcatService; import com.aoleyun.sn.service.LogcatService;
import com.aoleyun.sn.utils.ApkUtils; import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.ForegroundAppUtil;
import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils; import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.ServiceAliveUtils; import com.aoleyun.sn.utils.ServiceAliveUtils;
@@ -85,6 +86,8 @@ public class SplashActivity extends AppCompatActivity {
private void initView() { private void initView() {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
// String jsonString = ApkUtils.getRunningAppInfo(this);
// Log.e(TAG, "initView: " + jsonString);
ApkUtils.showAllAPP(this); ApkUtils.showAllAPP(this);
// JGYUtils.getInstance().cleanBackgroundMemory(); // JGYUtils.getInstance().cleanBackgroundMemory();
// NetInterfaceManager.getInstance().uploadLogFile(); // NetInterfaceManager.getInstance().uploadLogFile();

View File

@@ -2,10 +2,14 @@ package com.aoleyun.sn.activity.main;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.SystemClock; import android.os.SystemClock;
import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; 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.base.BaseActivity;
import com.aoleyun.sn.bean.StudentsInfo; import com.aoleyun.sn.bean.StudentsInfo;
import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.service.main.MainService; import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils; 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 { public class MainActivity extends BaseActivity implements MainAContact.MainView, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = MainActivity.class.getSimpleName(); private static final String TAG = MainActivity.class.getSimpleName();
public static final String UPDATE_LOCKED_STATUS = "UPDATE_LOCKED_STATUS";
@BindView(R.id.imageView) @BindView(R.id.imageView)
ImageView head; ImageView head;
@BindView(R.id.tv_devsn) @BindView(R.id.tv_devsn)
@@ -244,6 +251,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
public void initData() { public void initData() {
Log.e("getMacAddress", Utils.getAndroid10MAC(this)); Log.e("getMacAddress", Utils.getAndroid10MAC(this));
startService(new Intent(MainActivity.this, MainService.class)); startService(new Intent(MainActivity.this, MainService.class));
// registerUpdateReceiver();
mMainAPresenter.getLockedState(); mMainAPresenter.getLockedState();
} }
@@ -406,6 +414,9 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
JGYUtils.startServices(MainActivity.this); JGYUtils.startServices(MainActivity.this);
NetworkUtils.unregisterNetworkStatusChangedListener(this); NetworkUtils.unregisterNetworkStatusChangedListener(this);
mMainAPresenter.detachView(); mMainAPresenter.detachView();
if (mUpdateReceiver != null) {
unregisterReceiver(mUpdateReceiver);
}
} }
@Override @Override
@@ -427,4 +438,37 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
finish(); 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);
}
}
}
}
} }

View File

@@ -28,7 +28,7 @@ import java.io.Serializable;
* 磁盘缓存帮助类 * 磁盘缓存帮助类
*/ */
public class CacheHelper { public class CacheHelper {
private static final String TAG = "DiskLruCacheHelper"; private static final String TAG = CacheHelper.class.getSimpleName();
private MMKV mMMKV = MMKV.defaultMMKV(); private MMKV mMMKV = MMKV.defaultMMKV();

View File

@@ -42,7 +42,6 @@ import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.disklrucache.CacheHelper; import com.aoleyun.sn.disklrucache.CacheHelper;
import com.aoleyun.sn.disklrucache.DiskLruCacheHelper;
import com.aoleyun.sn.manager.ConnectManager; import com.aoleyun.sn.manager.ConnectManager;
import com.aoleyun.sn.manager.ConnectMode; import com.aoleyun.sn.manager.ConnectMode;
import com.aoleyun.sn.network.api.get.CheckTestUpdateApi; 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.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableSource;
import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.BiFunction; import io.reactivex.rxjava3.functions.BiFunction;
import io.reactivex.rxjava3.functions.Function;
import io.reactivex.rxjava3.functions.Function5; import io.reactivex.rxjava3.functions.Function5;
import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject; import io.reactivex.rxjava3.subjects.BehaviorSubject;
@@ -158,7 +155,6 @@ public class NetInterfaceManager {
private Context mContext; private Context mContext;
private Retrofit mRetrofit; private Retrofit mRetrofit;
private OkHttpClient okHttpClient; private OkHttpClient okHttpClient;
private DiskLruCacheHelper mDiskLruCacheHelper;
private MMKV mMMKV = MMKV.defaultMMKV(); private MMKV mMMKV = MMKV.defaultMMKV();
private CacheHelper cacheHelper; private CacheHelper cacheHelper;

View File

@@ -1,7 +1,6 @@
package com.aoleyun.sn.network.api.post; package com.aoleyun.sn.network.api.post;
import com.aoleyun.sn.bean.BaseResponse; import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.SnRunLog;
import com.aoleyun.sn.network.UrlAddress; import com.aoleyun.sn.network.UrlAddress;
import java.util.Map; import java.util.Map;

View File

@@ -1,15 +1,12 @@
package com.aoleyun.sn.network.api.post; package com.aoleyun.sn.network.api.post;
import com.aoleyun.sn.bean.BaseResponse; import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.SnRunLog;
import com.aoleyun.sn.network.UrlAddress; import com.aoleyun.sn.network.UrlAddress;
import java.util.Map; import java.util.Map;
import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Observable;
import okhttp3.MultipartBody; import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart; import retrofit2.http.Multipart;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Part; import retrofit2.http.Part;
@@ -18,7 +15,7 @@ import retrofit2.http.QueryMap;
public interface GetUploadLogApi { public interface GetUploadLogApi {
@Multipart @Multipart
@POST(UrlAddress.UPLOAD_LOG_FILE) @POST(UrlAddress.UPLOAD_LOG_FILE)
Observable<BaseResponse<SnRunLog>> GetSnRunLog( Observable<BaseResponse> UploadLog(
@QueryMap Map<String, String> params, @QueryMap Map<String, String> params,
@Part MultipartBody.Part body @Part MultipartBody.Part body
); );

View File

@@ -263,30 +263,29 @@ public class LogcatService extends Service {
} }
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("sn", Utils.getSerial()); 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); RequestBody fileBody = RequestBody.Companion.create(file, mediaType);
//设置一个file文件 //设置一个file文件
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), fileBody); MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), fileBody);
NetInterfaceManager.getInstance().getUploadLogApi() NetInterfaceManager.getInstance().getUploadLogApi()
.GetSnRunLog(params, body) .UploadLog(params, body)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseResponse<SnRunLog>>() { .subscribe(new Observer<BaseResponse>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
Log.e("uploadFile", "onSubscribe: "); Log.e("uploadFile", "onSubscribe: ");
} }
@Override @Override
public void onNext(BaseResponse<SnRunLog> snRunLogBaseResponse) { public void onNext(BaseResponse snRunLogBaseResponse) {
Log.e("uploadFile", "onNext: " + snRunLogBaseResponse); Log.e("uploadFile", "onNext: " + snRunLogBaseResponse);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
Log.e("uploadFile", "onError: " + e.getMessage()); Log.e("uploadFile", "onError: " + e.getMessage());
} }
@Override @Override

View File

@@ -40,6 +40,7 @@ import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R; import com.aoleyun.sn.R;
import com.aoleyun.sn.activity.checknet.CheckNetActivity; import com.aoleyun.sn.activity.checknet.CheckNetActivity;
import com.aoleyun.sn.activity.main.MainAPresenter; 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.BaseResponse;
import com.aoleyun.sn.bean.PoweroffBean; import com.aoleyun.sn.bean.PoweroffBean;
import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.CommonConfig;
@@ -821,7 +822,10 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
} else { } else {
ToastUtil.betaShow("设备已解锁"); ToastUtil.betaShow("设备已解锁");
SysSettingUtils.setEnableSetting(this); SysSettingUtils.setEnableSetting(this);
mPresenter.checkAoleyunUpdate();
} }
Intent intent = new Intent(MainActivity.UPDATE_LOCKED_STATUS);
sendBroadcast(intent);
} }
@Override @Override
@@ -829,6 +833,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
if (noTag) { if (noTag) {
//没有批次就没有管控 //没有批次就没有管控
Log.e(TAG, "setTagsFinish: " + "not set tag"); Log.e(TAG, "setTagsFinish: " + "not set tag");
mPresenter.getStudesInfo(true);
} else { } else {
mPresenter.getDeviceBatch(); 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, "is_screen_lock", false);
SPUtils.put(this, "screen_tips", ""); SPUtils.put(this, "screen_tips", "");
} }
mPresenter.getWiFiPasswd();
} }
} }

View File

@@ -48,6 +48,7 @@ import java.util.Arrays;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipFile; import java.util.zip.ZipFile;
@@ -1134,20 +1135,42 @@ public class ApkUtils {
Log.e("addShortcut", "putstring:" + qch_force_app); Log.e("addShortcut", "putstring:" + qch_force_app);
} }
private static Set<String> AoleyunOSApp = new HashSet<String>() {{
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) { public static String getRunningAppInfo(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); // ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> infoList = activityManager.getRunningServices(Integer.MAX_VALUE); // List<ActivityManager.RunningServiceInfo> infoList = activityManager.getRunningServices(Integer.MAX_VALUE);
ArrayList<UploadAppInfo> appList = new ArrayList<UploadAppInfo>(); //用来存储获取的应用信息数据 //用来存储获取的应用信息数据
ArrayList<UploadAppInfo> appList = new ArrayList<>();
List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0); List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
String topPkg = ForegroundAppUtil.getForegroundPackageName(context);
Log.e(TAG, "getRunningAppInfo: " + topPkg);
for (PackageInfo packageInfo : packages) { for (PackageInfo packageInfo : packages) {
String packageName = packageInfo.packageName; String packageName = packageInfo.packageName;
//排除桌面app和出厂自带app //排除桌面app和出厂自带app
if (desktopAPP.contains(packageName) || factoryapp.contains(packageName) || aoleyunAPP.contains(packageName)) { if (desktopAPP.contains(packageName) || factoryapp.contains(packageName)) {
continue; continue;
} }
//排除所有系统应用,不显示 //排除所有系统应用,不显示
if (isSystemApp(context, packageName)) { if (isSystemApp(context, packageName)) {
if (!AoleyunOSApp.contains(packageName)) {
continue; continue;
}
} else { } else {
//排除预装可以卸载的应用 //排除预装可以卸载的应用
if (canremove_systemapp.contains(packageName)) { if (canremove_systemapp.contains(packageName)) {
@@ -1156,19 +1179,22 @@ public class ApkUtils {
} }
UploadAppInfo uploadAppInfo = new UploadAppInfo(); UploadAppInfo uploadAppInfo = new UploadAppInfo();
uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString()); uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString());
uploadAppInfo.setPackage_name(packageInfo.packageName); uploadAppInfo.setPackage_name(packageName);
Log.e("getRunningAppInfo", "getRunningAppInfo:" + packageInfo.packageName); Log.e("getRunningAppInfo", "getRunningAppInfo:" + packageName);
String firstInstallTime = TimeUtils.transferLongToDate(packageInfo.lastUpdateTime); String firstInstallTime = TimeUtils.transferLongToDate(packageInfo.lastUpdateTime);
uploadAppInfo.setInstall_time(firstInstallTime); uploadAppInfo.setInstall_time(firstInstallTime);
uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode)); uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode));
uploadAppInfo.setState(0); uploadAppInfo.setState(0);
uploadAppInfo.setApp_size(getPackageSize(context, packageInfo.applicationInfo.publicSourceDir)); uploadAppInfo.setApp_size(getPackageSize(context, packageInfo.applicationInfo.publicSourceDir));
uploadAppInfo.setVersionName(packageInfo.versionName); uploadAppInfo.setVersionName(packageInfo.versionName);
for (ActivityManager.RunningServiceInfo info : infoList) { // for (ActivityManager.RunningServiceInfo info : infoList) {
if (info.process.contains(packageInfo.packageName)) { // if (info.process.contains(packageName)) {
// uploadAppInfo.setState(1);
// Log.e("getRunningAppInfo", "getRunningAppInfo running: " + packageName);
// }
// }
if (topPkg.equals(packageName)) {
uploadAppInfo.setState(1); uploadAppInfo.setState(1);
Log.e("getRunningAppInfo", "getRunningAppInfo running: " + packageInfo.packageName);
}
} }
appList.add(uploadAppInfo); appList.add(uploadAppInfo);
} }