From 1bf394241c5caab5de20f33c60e92dc754390449 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Mon, 20 Nov 2023 10:38:15 +0800 Subject: [PATCH] =?UTF-8?q?version:6.5.4=20fix:=20update:=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=B8=80=E7=99=BE=E5=88=86=E6=8E=A5=E5=8F=A3,?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B8=85=E7=90=86=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 25 +- app/keystore/P22.keystore | Bin 0 -> 2544 bytes app/libs/ebf_tools_v1.0.jar | Bin 0 -> 19912 bytes app/libs/接口说明.txt | 118 +++++ app/src/main/AndroidManifest.xml | 182 +++---- .../aoleyun/sn/activity/CleanupActivity.java | 50 ++ .../sn/activity/main/MainActivity.java | 79 +-- .../com/aoleyun/sn/base/BaseApplication.java | 9 +- .../com/aoleyun/sn/bean/StudentsInfo.java | 19 +- .../sn/hook/AoleyunActivityController.java | 53 ++ .../sn/network/NetInterfaceManager.java | 4 +- .../java/com/aoleyun/sn/push/PushManager.java | 17 +- .../aoleyun/sn/service/DownloadService.java | 34 -- .../aoleyun/sn/service/main/MainService.java | 23 +- .../java/com/aoleyun/sn/utils/ApkUtils.java | 7 +- .../java/com/aoleyun/sn/utils/JGYUtils.java | 313 +++++++++++- .../com/aoleyun/sn/utils/SysSettingUtils.java | 37 +- .../java/com/aoleyun/sn/utils/TimeUtils.java | 6 + .../main/java/com/aoleyun/sn/utils/Utils.java | 1 + .../res/drawable-hdpi/com_system_clean.png | Bin 0 -> 9885 bytes .../main/res/drawable-hdpi/icon_activated.png | Bin 0 -> 4143 bytes app/src/main/res/drawable-hdpi/icon_batch.png | Bin 0 -> 1909 bytes app/src/main/res/drawable-hdpi/icon_class.png | Bin 0 -> 1817 bytes app/src/main/res/drawable-hdpi/icon_clean.png | Bin 0 -> 6255 bytes .../res/drawable-hdpi/icon_inactivated.png | Bin 0 -> 3352 bytes .../res/drawable-hdpi/icon_student_id.png | Bin 0 -> 2385 bytes .../main/res/drawable-hdpi/icon_update.png | Bin 0 -> 3458 bytes .../main/res/layout-land/activity_main.xml | 479 +++++++----------- .../main/res/layout-port/activity_main.xml | 471 ++++++----------- app/src/main/res/layout/activity_cleanup.xml | 66 +++ app/src/main/res/values/strings.xml | 3 +- 31 files changed, 1161 insertions(+), 835 deletions(-) create mode 100644 app/keystore/P22.keystore create mode 100644 app/libs/ebf_tools_v1.0.jar create mode 100644 app/libs/接口说明.txt create mode 100644 app/src/main/java/com/aoleyun/sn/activity/CleanupActivity.java create mode 100644 app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java delete mode 100644 app/src/main/java/com/aoleyun/sn/service/DownloadService.java create mode 100644 app/src/main/res/drawable-hdpi/com_system_clean.png create mode 100644 app/src/main/res/drawable-hdpi/icon_activated.png create mode 100644 app/src/main/res/drawable-hdpi/icon_batch.png create mode 100644 app/src/main/res/drawable-hdpi/icon_class.png create mode 100644 app/src/main/res/drawable-hdpi/icon_clean.png create mode 100644 app/src/main/res/drawable-hdpi/icon_inactivated.png create mode 100644 app/src/main/res/drawable-hdpi/icon_student_id.png create mode 100644 app/src/main/res/drawable-hdpi/icon_update.png create mode 100644 app/src/main/res/layout/activity_cleanup.xml diff --git a/app/build.gradle b/app/build.gradle index 666eaad..d8592ec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ android { defaultConfig { applicationId "com.aoleyun.sn" - versionCode 88 - versionName "6.4.8" + versionCode 94 + versionName "6.5.4" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 @@ -112,7 +112,7 @@ android { v2SigningEnabled true } - G10P{ + G10P { storeFile file("keystore/G10PMTK11.jks") storePassword "123456" keyAlias "G10PMTK11" @@ -121,7 +121,7 @@ android { v2SigningEnabled true } - G10PUserDebug{ + G10PUserDebug { storeFile file("keystore/G10PUserDebug.jks") storePassword "123456" keyAlias "G10PUserDebug" @@ -130,7 +130,7 @@ android { v2SigningEnabled true } - zhanruiG10Z{ + zhanruiG10Z { storeFile file("keystore/zhanruiG10Z.keystore") storePassword "123456" keyAlias "zhanruiG10Z" @@ -183,6 +183,20 @@ android { } buildTypes { + c2Debug.initWith(debug) + c2Debug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.teclast8183 + buildConfigField "String", "platform", '"MTK8183"' + } + + c2Release.initWith(release) + c2Release { + signingConfig signingConfigs.teclast8183 + buildConfigField "String", "platform", '"MTK8183"' + } + teclast8183Debug.initWith(debug) teclast8183Debug { versionNameSuffix "-debug" @@ -384,6 +398,7 @@ dependencies { compileOnly files('libs/framework.jar') compileOnly files('libs/cube_mdm.jar') compileOnly files('libs/cube_sdk_v1.0.0.jar') + implementation files('libs/ebf_tools_v1.0.jar') implementation files('libs/vendor.mediatek.hardware.nvram-V1.0-java.jar') implementation 'androidx.recyclerview:recyclerview:1.2.1' diff --git a/app/keystore/P22.keystore b/app/keystore/P22.keystore new file mode 100644 index 0000000000000000000000000000000000000000..8141613362d25cf8dae154c9fbfbe879dc33a073 GIT binary patch literal 2544 zcmd5-_g9nY63&-GhlLGQilIxSd^G7@5m*qAD$;wThqg3H=!gg?fJmZe0wTR5Xh1|*+`IQ)&$;&x*dON1JI}oDIWzBh=9$Cw!*vJ*0zEe1FM|cj$sM25 zNQpe65C{SS#=#Fj78-`rGyohxL)icT0fEQCmoy2{620QzSM~Lc%bP7;LI?eB47qcO zk8wE9s2O~rrJsrRUt)b(BC0M!kAkEz7PpL!XR*dUx$HZjZ+796Ca=pi$$|p8dXqre zx-{h+T%mc3KTpDT$Q4G@=BekSM=zfPIr9RmNCEs<826)uPP&tW?Qc>OO=fWoW-71Z zwSovFLl^G{k~7nUmM`O-UNCEKX)$Dblp9iDlNO)`_r#Uq4z~Ek66|@2#PBk ziCl7NXs*JOPhS<2);ySgV>E2UhJ9@J5>Y&)le-qV6E#iNC=agL>CG@1KOs<*ArCpd z`2cjX1u{FVWJbKEBrp3Eu12w)bds;n*q+@d7budvrYI#w*3p|q7w$SWTe7#*o|Ajx z#yMf1-y7^qyoy1iuIK9^-Hbl5|B~AnTuonjM^OD%OM+7@D>vjw+0PxmLb^Ln*;9Sz z(01Y4+2(HJiP)3Ydn#MSjq(gd{q1TT^n+hSe3z(}eO;~PN~;0-vDFGO7Fn*Ht(bA8 zD$j2umFh*o3_k8KQUo3GA;^r-4b5S z_4yTI3lUMYli#$Pe>6$-zzk-;;BKnui=nxLvDDh}*z0Wa3GyItW>0!ue{A~N%kNSu z2DVznxF|l7&erpItz_gGK1uXDG-0J|&2u#A(ML{hU!Lt=J|jz<>%!i>)nW`&%)a(~ z^zC#-KtwT~FNrEJMA%9zf+`RQyy936 zNnji-lL&(XP$)g5CJ&eN#+tGZGSkqblMIq}nE?QPteW_2Sw@ha24)4PK|-x8WRW1- zkAM!zpy%R?@eIKFV_al8LG~XYEt1(JAk;s^1>=vh#(0FwvK|ZWG0uRb)$w=724LL( zjWGTX0{br_1fu>^13kcrbotj??Z3UWTYw)Zz{LzIg9@^Wa&iiwB523OEPvb>DEoK# zPc1tRK>hr|$14aH2QVM+CV&na2LKSl?}(cf%nr(YQx84XddngHXAGG9u(Z`EwpOzw zRr1F=2T1;OkpA#CN(k5Uhe_0gn26dnoUd5TZ^%&L(wp8whVb`*p=LA#d$qHw9%vW~N22%7-;MK{FzgFDoco?qX4QX2WKJRDSI=VE@`L)EE zo}ffhD4$+$sIN7G7t!9s98e@JbG9jGhE2XQsHJBplsqLHe~}L&iw6~`l_gs~VzM}3 zpP4u}Bp__sysTbOy8gA_QVeOfW?@a+hPiiSM2xB1T|qI^mv___32MuvuCryPs*>%p zaGx$N$t0HASWuigGK0D{dc~mttOS1m;=h9Y$Hd`hfpfyyP3MR;lZ2-dyZqSX7mJ-4 zsHEq4AinQMUKoz=0P(H3|9j^yKED*7`wwM8+)oq7^rICd909@r;OJ+19M9h|JphP} zsCna<>dD}#U;Ololg5Vw*&!0@Da1dbM}BY6sCvy4OAcEQl(z2ZaiP4B8Ihm5*v0T6 zg}wiPLCx-jo<71Pu9!cr_B6_%Ev0V2P+~KY$};)uh?JGbRiW7>2Y9dSFmfPIxj8jX zB(_9Q)aR}g|CNlJEBw`+!Lm`rcBQR>D(bn)ZIRsKr~Z-b&!F}}O?c)0oyh}44i`lv z!G5=v*)48Y+;K$N(5`;|7H_s-n7tt{_M7(y+{A?Kb7-MLbei1tIZZ05+Dd-?+j45l z6@$s&P}1Ys-Q@J4MwOee@k;4;`ohwt%Pl#`>~4_7TzQrPx# literal 0 HcmV?d00001 diff --git a/app/libs/ebf_tools_v1.0.jar b/app/libs/ebf_tools_v1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..f0dbe1d38b4f090e848d80d579937ab48b317a96 GIT binary patch literal 19912 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 H{ki)c%HX*T literal 0 HcmV?d00001 diff --git a/app/libs/接口说明.txt b/app/libs/接口说明.txt new file mode 100644 index 0000000..d442f19 --- /dev/null +++ b/app/libs/接口说明.txt @@ -0,0 +1,118 @@ +一:对接方式: aidl + 1.导入jar包依赖 + 2.绑定aidl服务: + Intent intent = new Intent("com.kte.interfacesettings.aidl"); + intent.setPackage("com.kte.interfacesettings"); + context.bindService(intent, aidlConnection, Context.BIND_AUTO_CREATE); + 3.解绑服务: + unbindService(mConnection); + +二:接口说明 + // 启用/禁用MTP数据传输功能 : + void setMtpEnable(boolean enable); + + // 启用/禁用Camera功能 : + void setCameraEnable(boolean enable); + + // 启用/禁用蓝牙功能 : + void setBluetoothEnable(boolean enable); + + // 启用/禁用wifi : + void setWifiAdvanceEnable(boolean enable); + + + // 设置默认浏览器: + void setDefaultBrowser(String packageName); + + + // 关机功能: + void shutdownDevice(); + + + // 睡眠/唤醒功能(熄屏亮屏): + void lockNow(boolean on); + + + // 设置背光亮度(屏幕亮度-1,0-255 ): + void setBackLightBrightness(int brightness); + + // 禁用/启用 飞行模式: + void setAirplaneDisable(boolean disable); + + // 重启功能: + void rebootDevice(); + + // 清除最近任务: + void clearRecentTask(); + + // 清除应用数据: + void clearAppData(String packageName); + + // 恢复出厂设置: + void wipeData(); + + + // 静默安装apk功能 + void silentInstall(String path,boolean autoLa); + + // 静默卸载apk功能 + void silentUninstall(String pkgName); + + + // 获取硬件MAC地址: + String getMACaddress(); + + + // 静默截图功能(截屏) + Bitmap captureScreen(String savePath); + + + // 设置默认输入法 + boolean setDefaultInputMethod(String ime); + + // 设置默认播放器 + boolean setDefaultVideoPlayer(String packageName,String className); + + // 获取root状态 + boolean isRooted(); + + // 设置锁屏壁纸 + void setLockWallPaper(String filePath); + + // 显示/隐藏下拉状态栏图标 + void showNotificationItems(int item, boolean visible); + + // 显隐系统设置项: + void setSettingOptionGoneorVisible(int item ,boolean visible); + + + // 获取当前所有正在运行的第三方应用进程接口 + List getThirdAppPkgList(); + + /** + * 打开/关闭护眼模式(夜间模式) + * @param state + * true 关闭;false 打开;默认是关闭状态; + **/ + void setProtectEyeModeClosed(boolean state); + + /** + * 获取护眼模式状态(夜间模式) + * @return state + * true 打开;false 关闭; + **/ + boolean getProtectEyeMode(); + + /** + * 打开/关闭阅读模式(黑白屏) + * @param state + * true 关闭;false 打开;默认是关闭状态; + **/ + void setReaderModeClosed(boolean state); + + /** + * 获取阅读模式(黑白屏) + * @return state + * true 打开;false 关闭; + **/ + boolean getReaderMode(); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ec1fd8c..4d1b93d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,7 +25,6 @@ - @@ -36,98 +35,69 @@ - - - + android:maxSdkVersion="23" /> - - + - - + tools:ignore="ProtectedPermissions" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - - + + @@ -142,7 +112,8 @@ android:theme="@style/AppTheme"> + android:exported="true" + android:screenOrientation="userPortrait"> @@ -157,21 +128,35 @@ android:launchMode="singleInstance" android:screenOrientation="userLandscape" android:theme="@style/AppTheme"> - + + + + + + + + - - - - + + + + + + - - - + - - + android:process=":remote" /> - - + android:required="false" /> @@ -331,33 +310,28 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + android:value="bQxx6zC6AvZ6O41UUPYq6X1LsQuC36dh" /> - + android:value="333598267" /> diff --git a/app/src/main/java/com/aoleyun/sn/activity/CleanupActivity.java b/app/src/main/java/com/aoleyun/sn/activity/CleanupActivity.java new file mode 100644 index 0000000..7a55e65 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/activity/CleanupActivity.java @@ -0,0 +1,50 @@ +package com.aoleyun.sn.activity; + +import android.view.View; +import android.widget.TextView; + +import com.aoleyun.sn.R; +import com.aoleyun.sn.base.BaseActivity; +import com.aoleyun.sn.utils.JGYUtils; +import com.aoleyun.sn.utils.ToastUtil; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class CleanupActivity extends BaseActivity { + + @BindView(R.id.tv_clean) + TextView tv_clean; + + /** + * 设置布局 + */ + @Override + public int getLayoutId() { + return R.layout.activity_cleanup; + } + + /** + * 初始化视图 + */ + @Override + public void initView() { + ButterKnife.bind(this); + tv_clean.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + JGYUtils.getInstance().cleanBackgroundMemory(); + ToastUtil.show("清理完成"); + finish(); + } + }); + } + + /** + * 初始化数据 + */ + @Override + public void initData() { + + } +} 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 5e3c7d4..dddc957 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 @@ -40,9 +40,11 @@ import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.dialog.UpdateDialog; import com.aoleyun.sn.service.main.MainService; +import com.aoleyun.sn.utils.ApkUtils; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; import com.aoleyun.sn.utils.SysSettingUtils; +import com.aoleyun.sn.utils.TimeUtils; import com.aoleyun.sn.utils.ToastUtil; import com.aoleyun.sn.utils.Utils; import com.blankj.utilcode.util.NetworkUtils; @@ -76,28 +78,22 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, ImageView back; @BindView(R.id.tv_version) TextView tv_version; - @BindView(R.id.bt_update) - Button bt_update; + @BindView(R.id.tv_activation_time) + TextView tv_activation_time; + @BindView(R.id.iv_update) + ImageView iv_update; + @BindView(R.id.iv_active_state) + ImageView iv_active_state; @BindView(R.id.iv_head) ImageView iv_head; @BindView(R.id.tv_name) TextView tv_name; @BindView(R.id.tv_batch) TextView tv_batch; - @BindView(R.id.cl_student) - ConstraintLayout cl_student; @BindView(R.id.tv_number) TextView tv_number; - @BindView(R.id.cl_serial) - ConstraintLayout cl_serial; - @BindView(R.id.cl_class) - ConstraintLayout cl_class; @BindView(R.id.tv_class) TextView tv_class; - @BindView(R.id.cl_number_name) - ConstraintLayout cl_number_name; - @BindView(R.id.tv_number_name) - TextView tv_number_name; @BindView(R.id.tv_model) TextView tv_model; @BindView(R.id.cl_ota) @@ -105,19 +101,6 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, @BindView(R.id.tv_system_version) TextView tv_system_version; - @BindView(R.id.tv_battery) - TextView tv_battery; - @BindView(R.id.tv_voltage) - TextView tv_voltage; - @BindView(R.id.tv_wifi) - TextView tv_wifi; - @BindView(R.id.tv_signal) - TextView tv_signal; - @BindView(R.id.tv_ip) - TextView tv_ip; - @BindView(R.id.tv_public_ip) - TextView tv_public_ip; - @BindView(R.id.tv_serial) TextView tv_serial; @BindView(R.id.tv_imei) @@ -190,31 +173,19 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, mMainAPresenter.setLifecycle(lifecycleSubject); JGYUtils.startServices(MainActivity.this); getDevicesInfo(); - if (Utils.isWifiAvailable(MainActivity.this)) { - tv_signal.setText(Utils.obtainWifiInfo(MainActivity.this) + "dbm"); - } else { - tv_signal.setText("未连接"); - } if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AH6016Platform) { - cl_student.setVisibility(View.GONE); - cl_serial.setVisibility(View.VISIBLE); - cl_class.setVisibility(View.GONE); - cl_number_name.setVisibility(View.VISIBLE); String sn = Utils.getSn(); if (!TextUtils.isEmpty(sn)) { if (sn.length() > 4) { - tv_number_name.setText(sn.substring(sn.length() - 4)); +// tv_number_name.setText(sn.substring(sn.length() - 4)); } else { - tv_number_name.setText(sn); +// tv_number_name.setText(sn); } } } else { - cl_student.setVisibility(View.VISIBLE); - cl_serial.setVisibility(View.GONE); - cl_class.setVisibility(View.VISIBLE); - cl_number_name.setVisibility(View.GONE); + } - bt_update.setOnClickListener(new View.OnClickListener() { + iv_update.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(MainActivity.this, UpdateActivity.class)); @@ -369,12 +340,8 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, public void setLockedState(boolean loocked) { Log.e(TAG, "setLockedState: " + loocked); if (loocked) { -// iv_locked.setVisibility(View.VISIBLE); -// iv_locked.setImageDrawable(getDrawable(R.drawable.locked)); mMainAPresenter.getStudesInfo(); } else { -// iv_locked.setVisibility(View.VISIBLE); -// iv_locked.setImageDrawable(getDrawable(R.drawable.unlock)); setNumberText("", View.GONE); setNameText("", View.GONE); setClassText("", View.GONE); @@ -393,8 +360,12 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, @Override public void setStudesInfo(StudentsInfo studesInfo) { if (studesInfo == null) { + iv_active_state.setImageDrawable(getDrawable(R.drawable.icon_inactivated)); return; } + iv_active_state.setImageDrawable(getDrawable(R.drawable.icon_activated)); + long activation_time = studesInfo.getActivation_time(); + tv_activation_time.setText("激活时间:" + TimeUtils.getActivationTime(activation_time)); int trade_type = studesInfo.getTrade_type(); String sno = studesInfo.getSno(); String realname = studesInfo.getRealname(); @@ -409,7 +380,6 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, tv_bind_status.setText("未绑定"); } - settradeType(trade_type); if (TextUtils.isEmpty(sno)) { setNumberText("未设置", View.GONE); @@ -457,7 +427,6 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, @Override public void setPublicIp(String ip) { Log.e(TAG, "setPublicIp: " + ip); - tv_public_ip.setText(ip); mMainAPresenter.checkAoleyunUpdate(); } @@ -702,7 +671,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, switch (intent.getAction()) { case WifiManager.RSSI_CHANGED_ACTION: int rssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -1); - tv_signal.setText(rssi + "dBm"); +// tv_signal.setText(rssi + "dBm"); //这函数可以计算出信号的等级 int strength = WifiManager.calculateSignalLevel(rssi, 5); Log.e(TAG, "wifi信号强度变化"); @@ -712,16 +681,16 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) { Log.e(TAG, getString(R.string.wifi_disconnected)); - tv_wifi.setText(getString(R.string.wifi_disconnected)); - tv_signal.setText(""); - tv_ip.setText(getString(R.string.unknown)); +// tv_wifi.setText(getString(R.string.wifi_disconnected)); +// tv_signal.setText(""); +// tv_ip.setText(getString(R.string.unknown)); } else if (info.getState().equals(NetworkInfo.State.CONNECTED)) { WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); //获取当前wifi名称 String newSSID = wifiInfo.getSSID(); - tv_wifi.setText(newSSID); - tv_ip.setText(Formatter.formatIpAddress(wifiInfo.getIpAddress())); +// tv_wifi.setText(newSSID); +// tv_ip.setText(Formatter.formatIpAddress(wifiInfo.getIpAddress())); setMac(); Log.e(TAG, "连接到网络 " + newSSID); } @@ -765,9 +734,9 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, int level = intent.getIntExtra(EXTRA_LEVEL, 0); int batteryVolt = intent.getIntExtra(EXTRA_VOLTAGE, -1); String levelStr = getLevel(level); - tv_battery.setText("电量:" + levelStr); +// tv_battery.setText("电量:" + levelStr); String batteryVoltStr = getBatteryVolt(batteryVolt); - tv_voltage.setText("电压:" + batteryVoltStr); +// tv_voltage.setText("电压:" + batteryVoltStr); } } } diff --git a/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java b/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java index f0b765c..221e3ee 100644 --- a/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java +++ b/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java @@ -135,8 +135,13 @@ public class BaseApplication extends MultiDexApplication { @Override public void onNext(String code) { Log.e("initRegisterObservable", "onNext: " + code); - Log.e("initRegisterObservable", "onNext: 重新注册aliyunPush"); - aliyunPushInit(); + switch (code){ + case "PUSH_20110": + break; + default: + Log.e("initRegisterObservable", "onNext: 重新注册aliyunPush"); + aliyunPushInit(); + } } @Override diff --git a/app/src/main/java/com/aoleyun/sn/bean/StudentsInfo.java b/app/src/main/java/com/aoleyun/sn/bean/StudentsInfo.java index 7736846..3fc708f 100644 --- a/app/src/main/java/com/aoleyun/sn/bean/StudentsInfo.java +++ b/app/src/main/java/com/aoleyun/sn/bean/StudentsInfo.java @@ -8,9 +8,10 @@ import com.google.gson.JsonParser; import java.io.Serializable; public class StudentsInfo implements Serializable { - private static final long serialVersionUID = -1489445700991359595L; + int id; + long activation_time; String batch; String sno; String realname; @@ -22,6 +23,22 @@ public class StudentsInfo implements Serializable { String bind_mobile; int bind_status; + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public long getActivation_time() { + return activation_time; + } + + public void setActivation_time(long activation_time) { + this.activation_time = activation_time; + } + public String getBatch() { return batch; } diff --git a/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java b/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java new file mode 100644 index 0000000..d504cee --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java @@ -0,0 +1,53 @@ +package com.aoleyun.sn.hook; + +import android.app.IActivityController; +import android.content.Context; +import android.content.Intent; +import android.provider.Settings; +import android.util.Log; + +import com.aoleyun.sn.utils.JGYUtils; +import com.aoleyun.sn.utils.ToastUtil; + +public class AoleyunActivityController extends IActivityController.Stub { + private static final String TAG = AoleyunActivityController.class.getSimpleName(); + + @Override + public boolean activityStarting(Intent intent, String pkg) { + Log.e(TAG, "activityStarting: " + pkg + ", intent= " + intent); + //retrun false;//false 则不会启动,直接返回。 + return JGYUtils.getInstance().isForbid(pkg); + } + + @Override + public boolean activityResuming(String pkg) { + Log.e(TAG, "activityResuming: " + pkg); + return true; + } + + @Override + public int appEarlyNotResponding(String processName, int pid, String annotation) { + Log.e(TAG, "appEarlyNotResponding: " + processName); + return 0; + } + + @Override + public boolean appCrashed(String processName, int pid, String shortMsg, String longMsg, long timeMillis, String stackTrace) { + Log.e(TAG, "appCrashed: " + processName); + return false; + } + + @Override + public int appNotResponding(String processName, int pid, String processStats) { + Log.e(TAG, "appNotResponding: " + processName); + return 0; + } + + @Override + public int systemNotResponding(String msg) { + Log.e(TAG, "systemNotResponding: " + msg); + return 1; + } + +} + 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 e77fef6..d451597 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -2038,6 +2038,7 @@ public class NetInterfaceManager { } else { Log.e(TAG, "setDefaultApp: default_IME is empty"); } + JGYUtils.getInstance().setDefaultBrowser(default_IME); String default_launcher = defaultApp.getDefault_launcher(); if (!TextUtils.isEmpty(default_launcher)) { JGYUtils.getInstance().setDefaultDesktop(default_launcher); @@ -2410,8 +2411,9 @@ public class NetInterfaceManager { tagSets.add(JGYUtils.ZR6016Tag); } else if (platform == JGYUtils.HRAD13Platform) { tagSets.add(JGYUtils.HRAD13Tag); + } else if (platform == JGYUtils.C2Platform) { + tagSets.add(JGYUtils.C2Tag); } - }); Log.e(TAG, "clearAndAppendTags: " + tagSets); String[] tag = new ArrayList<>(tagSets).toArray(new String[tagSets.size()]); diff --git a/app/src/main/java/com/aoleyun/sn/push/PushManager.java b/app/src/main/java/com/aoleyun/sn/push/PushManager.java index 9c156cd..693eb36 100644 --- a/app/src/main/java/com/aoleyun/sn/push/PushManager.java +++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java @@ -59,6 +59,7 @@ import com.baidu.location.BDLocation; import com.baidu.location.LocationClient; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.tencent.mmkv.MMKV; @@ -1082,13 +1083,19 @@ public class PushManager { JGYUtils.getInstance().setDefaultDesktop(""); } else { JsonObject jsonObject = GsonUtils.getJsonObject(extras); - String default_launcher = jsonObject.get("default_launcher").getAsString(); - if (TextUtils.isEmpty(default_launcher)) { + JsonElement launcherElement = jsonObject.get("default_launcher"); + if (launcherElement.isJsonNull()){ JGYUtils.getInstance().setDefaultDesktop(""); SPUtils.put(mContext, "default_launcher", ""); - } else { - JGYUtils.getInstance().setDefaultDesktop(default_launcher); - SPUtils.put(mContext, "default_launcher", default_launcher); + }else { + String default_launcher = launcherElement.getAsString(); + if ( TextUtils.isEmpty(default_launcher)) { + JGYUtils.getInstance().setDefaultDesktop(""); + SPUtils.put(mContext, "default_launcher", ""); + } else { + JGYUtils.getInstance().setDefaultDesktop(default_launcher); + SPUtils.put(mContext, "default_launcher", default_launcher); + } } } } diff --git a/app/src/main/java/com/aoleyun/sn/service/DownloadService.java b/app/src/main/java/com/aoleyun/sn/service/DownloadService.java deleted file mode 100644 index 4d18295..0000000 --- a/app/src/main/java/com/aoleyun/sn/service/DownloadService.java +++ /dev/null @@ -1,34 +0,0 @@ - -package com.aoleyun.sn.service; - -import android.app.Service; -import android.content.Intent; -import android.os.IBinder; - -// 下载管理服务 -public class DownloadService extends Service { - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - flags = START_STICKY; - return super.onStartCommand(intent, flags, startId); - } - - @Override - public void onCreate() { - super.onCreate(); - startService(new Intent(this, StepService.class)); - startService(new Intent(this, GuardService.class)); - } - - - @Override - public void onDestroy() { - super.onDestroy(); - } - - @Override - public IBinder onBind(Intent intent) { - return null; - } - -} 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 adad8bc..0594b94 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 @@ -1,7 +1,9 @@ package com.aoleyun.sn.service.main; import android.annotation.SuppressLint; +import android.app.ActivityManagerNative; import android.app.AlarmManager; +import android.app.IActivityManager; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.Service; @@ -21,6 +23,7 @@ import android.os.Binder; import android.os.Build; import android.os.Handler; import android.os.IBinder; +import android.os.RemoteException; import android.provider.Settings; import android.text.TextUtils; import android.util.DisplayMetrics; @@ -45,6 +48,7 @@ import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.gson.GsonUtils; +import com.aoleyun.sn.hook.AoleyunActivityController; import com.aoleyun.sn.network.NetInterfaceManager; import com.aoleyun.sn.rlog.LogDBManager; import com.aoleyun.sn.utils.ApkUtils; @@ -353,6 +357,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo TimeTask task = new TimeTask(); task.execute("ntp.aliyun.com"); mPresenter.getLockedState(); + Settings.Global.putString(getContentResolver(), "AOLE_SERIAL", Utils.getSerial(MainService.this)); PackageManager pm = getPackageManager(); try { @@ -440,6 +445,14 @@ public class MainService extends Service implements MainSContact.MainView, Netwo // notificationManager = NotificationManagerCompat.from(this); // createNotificationChannel(); // aliyunPushInit(); + + IActivityManager activityManager = ActivityManagerNative.getDefault(); + try { + activityManager.setActivityController(new AoleyunActivityController(), true); + } catch (RemoteException e) { + Log.e(TAG, "setActivityController: " + e.getMessage()); + e.printStackTrace(); + } } @Override @@ -1143,18 +1156,18 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void getEbagCodeFinish(boolean activation) { - if (activation){ + if (activation) { mPresenter.getExclusiveAdminApp(); - Log.e(TAG, "getEBagCodeFinish: "+"已激活" ); - }else { + Log.e(TAG, "getEBagCodeFinish: " + "已激活"); + } else { mPresenter.getWiFiPasswd(); - Log.e(TAG, "getEBagCodeFinish: "+"未激活" ); + Log.e(TAG, "getEBagCodeFinish: " + "未激活"); } } @Override public void getExclusiveAdminAppFinish() { - Log.e(TAG, "getAdminAppFinish: " ); + Log.e(TAG, "getAdminAppFinish: "); 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 cd62cc3..f8f2325 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java @@ -755,14 +755,17 @@ public class ApkUtils { // this.add("com.shoufei.aole"); }}; - public static List aoleyunAPP = new ArrayList() {{ + public static Set aoleyunAPP = new HashSet() {{ + this.add(BuildConfig.APPLICATION_ID); this.add("com.aoleyun.appstore"); this.add("com.aoleyun.sn"); this.add("com.aoleyun.info"); this.add("com.aoleyun.os"); this.add("com.aoleyun.browser"); - this.add("com.aoleyun.browser"); this.add("com.uiui.filecloud"); + this.add("com.gl.dwlauncher"); + this.add("com.qunyu.dividedroad"); + this.add("com.ygyb.yischool"); }}; //出厂自带的app diff --git a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java index 6e47fe4..7ac5651 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java @@ -11,6 +11,7 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.content.IntentFilter; +import android.content.ServiceConnection; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -23,6 +24,7 @@ import android.net.Uri; import android.os.BatteryManager; import android.os.Build; import android.os.Environment; +import android.os.IBinder; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; @@ -67,6 +69,7 @@ import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import com.kte.interfacesettings.aidl.ITools; import com.tencent.mmkv.MMKV; import java.io.File; @@ -128,6 +131,8 @@ public class JGYUtils { public static final int AH6016Platform = 9; public static final int ZR6016Platform = 10; public static final int HRAD13Platform = 11; + public static final int Teclast8183Platform = 12; + public static final int C2Platform = 13; public static final String Other = "其他"; @@ -139,6 +144,8 @@ public class JGYUtils { public static final String AH6016Tag = "AH6016"; public static final String ZR6016Tag = "ZR6016"; public static final String HRAD13Tag = "HRAD13"; + public static final String Teclast8183Tag = "teclast8183"; + public static final String C2Tag = "MTK8183"; private CacheHelper cacheHelper; @@ -155,6 +162,28 @@ public class JGYUtils { this.crv = context.getContentResolver(); this.cacheHelper = new CacheHelper(context); initConnectedTimeCache(); + if (C2Tag.equals(BuildConfig.platform)) { + Log.e(TAG, "JGYUtils: c2"); + mServiceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName componentName, IBinder iBinder) { + Log.e(TAG, "onServiceConnected: " + componentName); + try { + mITools = ITools.Stub.asInterface(iBinder); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onServiceDisconnected(ComponentName componentName) { + Log.e(TAG, "onServiceDisconnected: " + componentName); + mITools = null; + bindEbaifenService(); + } + }; + bindEbaifenService(); + } } public static void init(Context context) { @@ -173,6 +202,20 @@ public class JGYUtils { public static native String getAuthorization(); + private static final String EBAIFEN_PACKAGE = "com.kte.interfacesettings"; + private static final String EBAIFEN_CLASS_NAME = "com.kte.interfacesettings.ToolsImplService"; + private static final String EBAIFEN_ACTION = "com.kte.interfacesettings.aidl"; + + private ITools mITools; + private ServiceConnection mServiceConnection; + + private void bindEbaifenService() { + Intent intent = new Intent(EBAIFEN_ACTION); + intent.setPackage(EBAIFEN_PACKAGE); +// intent.setComponent(new ComponentName(EBAIFEN_PACKAGE, EBAIFEN_CLASS_NAME)); + mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); + } + public int checkSNPlatform(String sn) { if (TextUtils.isEmpty(sn)) return UnknowPlatform; String secondChars = sn.substring(1, 2); @@ -212,10 +255,14 @@ public class JGYUtils { } else if (HRAD13Tag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "HRAD13"); return HRAD13Platform; + } else if (C2Tag.equalsIgnoreCase(platform)) { + Log.i(TAG, "checkAppPlatform: " + "C2"); + return C2Platform; } else { Log.i(TAG, "checkAppPlatform: " + "没有数据"); return UnknowPlatform; } + } public boolean isSamePlatform(String platform) { @@ -249,6 +296,8 @@ public class JGYUtils { getAppPlatformCallback.AppPlatform(ZR6016Platform); } else if (HRAD13Tag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(HRAD13Platform); + } else if (C2Tag.equalsIgnoreCase(platform)) { + getAppPlatformCallback.AppPlatform(C2Platform); } else { getAppPlatformCallback.AppPlatform(UnknowPlatform); } @@ -272,7 +321,9 @@ public class JGYUtils { return ZR6016Tag; } else if (HRAD13Tag.equalsIgnoreCase(platform)) { return HRAD13Tag; - } else { + } else if (C2Tag.equalsIgnoreCase(platform)) { + return C2Tag; + }else { return Other; } } @@ -1164,6 +1215,8 @@ public class JGYUtils { String aole_app_forbid = String.join(",", pkgSet); Log.e(TAG, "writeAppPackageList: " + aole_app_forbid); boolean b = Settings.System.putString(crv, CommonConfig.AOLE_ACTION_APP_FORBID, aole_app_forbid); + setAppRestriction(2); + addAppInstallWhiteList(new ArrayList<>(pkgSet)); Log.e("writeAppPackageList: ", "aole_app_forbid: " + b + " " + Settings.System.getString(crv, CommonConfig.AOLE_ACTION_APP_FORBID)); } @@ -1675,6 +1728,7 @@ public class JGYUtils { || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AH6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZR6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.HRAD13Platform + || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.C2Platform ) { Settings.Global.putInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, state == 1 ? 0 : 1); Settings.Global.putInt(crv, Settings.Global.ADB_ENABLED, state == 1 ? 0 : 1); @@ -2065,6 +2119,9 @@ public class JGYUtils { private String Launcher3 = "com.android.launcher3"; private String Launcher3Class = "com.android.launcher3.Launcher"; + private String AoleyunOs ="com.aoleyun.os"; + private String AoleyunOsClass ="com.aoleyun.os.Launcher"; + public void setDefaultLauncher(Context context, String defPackageName, String defClassName) { try { if (!TextUtils.isEmpty(defPackageName) && !TextUtils.isEmpty(defClassName)) { @@ -2171,8 +2228,12 @@ public class JGYUtils { } private void openLauncher3() { - setDefaultDesktop(Launcher3, Launcher3Class); // ApkUtils.openPackage(mContext, Launcher3); + if ("C2".equals(Build.MODEL)){ + setDefaultDesktop(AoleyunOs, AoleyunOsClass); + }else { + setDefaultDesktop(Launcher3, Launcher3Class); + } } public String getStartClassName(String pkg) { @@ -2242,6 +2303,8 @@ public class JGYUtils { Log.e(TAG, "setDefaultDesktop: " + pkg + ":" + className); Log.e(TAG, "setDefaultDesktop: " + "persist.sys.launcher.pkgname = " + SystemProperties.get("persist.sys.launcher.pkgname")); Log.e(TAG, "setDefaultDesktop: " + "persist.sys.launcher.classname = " + SystemProperties.get("persist.sys.launcher.classname")); + + setDefaultLauncher(new ComponentName(pkg, className)); } public String getMacJson(Context context) { @@ -2372,6 +2435,72 @@ public class JGYUtils { } + public boolean isForbid(String pkg) { + switch (pkg) { + case "com.mediatek.camera": + case "com.android.camera2": + if (Settings.System.getInt(crv, "qch_app_camera", 0) == 1) { + ToastUtil.show("摄像头已禁止使用"); + return false; + } + break; + case "com.android.dialer": + if (Settings.System.getInt(crv, "qch_call_forbid", 0) == 1) { + ToastUtil.show("电话已禁止使用"); + return false; + } + break; + case "com.android.gallery3d": + if (Settings.System.getInt(crv, "qch_app_gallery", 1) == 1) { + ToastUtil.show("图库已禁止使用"); + return false; + } + break; + case "com.android.documentsui": + if (Settings.System.getInt(crv, "qch_app_filemanager", 1) == 1) { + ToastUtil.show("文件已禁止使用"); + return false; + } + break; + case "com.android.deskclock": + if (Settings.System.getInt(crv, "qch_app_deskclock", 0) == 1) { + ToastUtil.show("时钟已禁止使用"); + return false; + } + break; + case "com.android.music": + if (Settings.System.getInt(crv, "qch_app_music", 1) == 1) { + ToastUtil.show("音乐已禁止使用"); + return false; + } + break; + case "com.android.soundrecorder": + if (Settings.System.getInt(crv, "qch_app_soundrecorder", 1) == 1) { + ToastUtil.show("录音机已禁止使用"); + return false; + } + break; + case "com.aoleyun.browser": + case "com.android.browser": + if (Settings.System.getInt(crv, "qch_app_browser", 1) == 1) { + ToastUtil.show("浏览器已禁止使用"); + return false; + } + break; + case "com.android.messaging": + case "com.android.mms": + if (Settings.System.getInt(crv, "qch_app_sms", 1) == 1) { + ToastUtil.show("短信已禁止使用"); + return false; + } + break; + default: + return true; + } + return false; + } + + public static final String PACKAGE_DEVICEINFO = "com.aoleyun.sn"; public static final String CLASS_DEVICEINFO = "com.aoleyun.sn.receiver.BootReceiver"; @@ -2669,4 +2798,184 @@ public class JGYUtils { this.add("com.teclast.zyappstore"); this.add("com.teclast.zy"); }}; + + + /** + * 启用/禁用MTP数据传输功能 + * + * @param enable + */ + void setMtpEnable(boolean enable) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setMtpEnable: " + enable); + try { + mITools.setMtpEnable(enable); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + /** + * 启用/禁用Camera功能 + * + * @param enable + */ + void setCameraEnable(boolean enable) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setCameraEnable: " + enable); + try { + mITools.setCameraEnable(enable); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + /** + * 启用/禁用蓝牙功能 + * + * @param enable + */ + void setBluetoothEnable(boolean enable) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setBluetoothEnable: " + enable); + try { + mITools.setBluetoothEnable(enable); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + /** + * No. 7 + * 启用/禁用OTG T卡功能 + * + * @param enable true 启用 ,false 禁用 + **/ + void setSDOTGEnable(boolean enable) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setSDOTGEnable: " + enable); + try { + mITools.setSDOTGEnable(enable); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + + /** + * No. 31 + * 设置apk安装黑白名单模式,不会清除黑白名单数据 + * + * @param pattern 0:普通模式(黑白名单都不生效),1:黑名单模式,2:白名单模式 + **/ + void setAppRestriction(int pattern) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setAppRestriction: " + pattern); + try { + mITools.setAppRestriction(pattern); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + /** + * No. 32 + * 获取apk安装名单模式 + * @return + * int 0:普通模式(黑白名单都不生效),1:黑名单模式,2:白名单模式 + **/ +// int getAppRestrictionMode(){ +// +// } + + /** + * No. 33 + * 设置apk安装白名单 + * 在设置前需要先调用setAppRestriction用来设置apk安装模式 + * 当设置了黑白名单模式,但对应的黑白名单值为空时,等同于设置为0(普通模式,黑白名单都不生效) + * + * @param packageNameList 包名列表 + **/ + void addAppInstallWhiteList(List packageNameList) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "addAppInstallWhiteList: " + packageNameList); + try { + mITools.addAppInstallWhiteList(packageNameList); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + /** + * No. 34 + * 删除安装白名单列表 + * + * @param packageNameList 包名列表 + **/ + void delAppInstallWhiteList(List packageNameList) { + if (C2Tag.equals(BuildConfig.platform)) { + try { + mITools.delAppInstallWhiteList(packageNameList); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + + /** + * No. 35 + * 清空安装白名单列表 + **/ + void clearAppInstallWhiteList() { + if (C2Tag.equals(BuildConfig.platform)) { + try { + mITools.clearAppInstallWhiteList(); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + + /** + * No. 54 + * 设置默认Launcher + * + * @param packageName apk的包名 + * @param className apk的组件类名 + **/ + void setDefaultLauncher(ComponentName cmpName) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setDefaultLauncher: " + cmpName); + try { + mITools.setDefaultLauncher(cmpName); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + + /** + * No. 55 + * 设置默认浏览器 + * + * @param packageName apk的包名 + **/ + public void setDefaultBrowser(String packageName) { + if (C2Tag.equals(BuildConfig.platform)) { + Log.e("ITools", "setDefaultBrowser: " + packageName); + try { + mITools.setDefaultBrowser(packageName); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } } diff --git a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java index a59cedd..8dac348 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java @@ -154,6 +154,7 @@ public class SysSettingUtils { } //存储卡 int setting_memory = changeNum(jsonObject.get("setting_memory").getAsInt()); + JGYUtils.getInstance().setSDOTGEnable(setting_memory == 0); boolean aole_sdcard_forbid_on = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_SDCARD_FORBID_ON, setting_memory); Log.e(TAG, "aole_sdcard_forbid_on:" + aole_sdcard_forbid_on); } catch (Exception e) { @@ -215,12 +216,15 @@ public class SysSettingUtils { default: case "usb_charge": usbStatus = CommonConfig.AOLE_ACTION_USB_USB_CHARGE; + JGYUtils.getInstance().setMtpEnable(false); break; case "usb_mtp": usbStatus = CommonConfig.AOLE_ACTION_USB_USB_MTP; + JGYUtils.getInstance().setMtpEnable(true); break; case "usb_midi": usbStatus = CommonConfig.AOLE_ACTION_USB_USB_MIDI; + JGYUtils.getInstance().setMtpEnable(false); break; } Intent usbIntent = new Intent(usbStatus); @@ -232,6 +236,7 @@ public class SysSettingUtils { context.sendBroadcast(usbIntent); } } + } private static void setBluetooth(Context context, int state) { @@ -295,6 +300,7 @@ public class SysSettingUtils { //设置关闭时关闭蓝牙 } } + JGYUtils.getInstance().setBluetoothEnable(setting_bht == 1); } catch (Exception e) { Log.e(TAG, "setBluetooth: " + e.getMessage()); } @@ -401,22 +407,22 @@ public class SysSettingUtils { int setting_statusbar = changeNum(jsonObject.get("setting_statusbar").getAsInt()); // int oldNum = Settings.System.getInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR, 0); // if (oldNum != setting_statusbar) { - //写入到系统不涉及任何管控,因为之前调用会频繁隐藏显示 - boolean aole_hide_statusBar = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR, setting_statusbar); - Log.e(TAG, "aole_hide_statusBar: " + aole_hide_statusBar); - String statusbarStatus = ""; - switch (setting_statusbar) { - case 0: - statusbarStatus = CommonConfig.AOLE_ACTION_SHOW_STATUS_BAR; - break; - case 1: - statusbarStatus = CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR; - break; - default: - } - Intent statusIntent = new Intent(statusbarStatus); + //写入到系统不涉及任何管控,因为之前调用会频繁隐藏显示 + boolean aole_hide_statusBar = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR, setting_statusbar); + Log.e(TAG, "aole_hide_statusBar: " + aole_hide_statusBar); + String statusbarStatus = ""; + switch (setting_statusbar) { + case 0: + statusbarStatus = CommonConfig.AOLE_ACTION_SHOW_STATUS_BAR; + break; + case 1: + statusbarStatus = CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR; + break; + default: + } + Intent statusIntent = new Intent(statusbarStatus); // Intent statusIntent = new Intent(statusbarStatus).setPackage("com.android.systemui"); - context.sendBroadcast(statusIntent); + context.sendBroadcast(statusIntent); // } } @@ -462,6 +468,7 @@ public class SysSettingUtils { } Intent cameraIntent = new Intent(cameraStatus).setPackage("com.android.settings"); context.sendBroadcast(cameraIntent); + JGYUtils.getInstance().setCameraEnable(setting_camera == 1); } catch (Exception e) { Log.e(TAG, "setCamera: " + e.getMessage()); } diff --git a/app/src/main/java/com/aoleyun/sn/utils/TimeUtils.java b/app/src/main/java/com/aoleyun/sn/utils/TimeUtils.java index 55855ca..0ee6d29 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/TimeUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/TimeUtils.java @@ -96,6 +96,12 @@ public class TimeUtils { return sdf.format(date); } + public static String getActivationTime(long second) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = new Date(second * 1000); + return sdf.format(date); + } + private static long getLoopTime(String timestamp) { //"15:34:39" SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); diff --git a/app/src/main/java/com/aoleyun/sn/utils/Utils.java b/app/src/main/java/com/aoleyun/sn/utils/Utils.java index e5be1ea..acfcd1d 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/Utils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/Utils.java @@ -1766,6 +1766,7 @@ public class Utils { || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AH6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZR6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.HRAD13Platform + || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.C2Platform ) { return Utils.getProperty("ro.build.display.id", "获取失败"); } else { diff --git a/app/src/main/res/drawable-hdpi/com_system_clean.png b/app/src/main/res/drawable-hdpi/com_system_clean.png new file mode 100644 index 0000000000000000000000000000000000000000..b21d7e7314bbb35984d4c6b7b55966863529ad6e GIT binary patch literal 9885 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/icon_activated.png b/app/src/main/res/drawable-hdpi/icon_activated.png new file mode 100644 index 0000000000000000000000000000000000000000..03d31585313e45c790207cce6f25006310510dc0 GIT binary patch literal 4143 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 BW>x?I literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/icon_batch.png b/app/src/main/res/drawable-hdpi/icon_batch.png new file mode 100644 index 0000000000000000000000000000000000000000..1c72e0fc093bed42c7b031bc5755f6819c18c42c GIT binary patch literal 1909 zcmaJ?c~BEq9F7o>(<+84iVzl$c;tpaQX&$PKq$coK|n~!wLl7+U6R#A%1{j;f(lMW z1{9G~1px(tdei|N@uHPhs1#Zh6ts9@saA?(+l>|5KT3Dr?mOoDzTf#~b0uLxj&@7z za5$W!D3~9P%|i2QV~u@NDfhCl$psZeqY-cdYEbAvT!0!@fRHFi+(kV1^NHajO`2V30^d7B8!@+<2{ZC=N zbUOl4!$Cc~Rj0xVm*8nOg>V9OpaO+;QW#E|$)Y3)Mqzytj1U7OSVU5kMyrMm`qgjo zVlhXg)uRfn3Ka3V0H#3EXw)1Yi^bqESUx@hLMELq5ctvrbatS?SIA@tdA@-GGh9Bb z+6sYMbcU<`hwD2l*W3yaf?4K+I?XmvE!4pf@omT)&FsE-&#L#1tDfB#)~sAA<_y(b z*nbsz<_PN^^YVS$Vw?Ak4{EV)*I{j~oF6%b-Ij3?KR{|694)=5{gF0*M?v8sg6&}K z(_5WxlWy3!J{It!tK%so2Dq*hXR+j&km>jw9sLbWx1^~HFj+Mla7|`5k^~7a8r(`yG+K+ zERVK<4XL*TX^77};KH*G^0!}DjsBoJH?-%gX@@iM?uzeQdRRMa5B3B{x8KP* zJmD^vRUOq?_3p7>mTu~OjlcQg!HevybAM2F4#ZyqE9JXhpWWMVHT&+LxZf!9m%q(_ zV7=kQ{oCN!YE2;r*Gm9#@7qu#@QB$1hYkeA_V2S_{EKUOwLI(Pv{1e`x6G1|Gj;D-NNI)KW#rJo zdh)SiJ9a~otiJ2I@^nz_T&uBd2Ux9{3uRKbk7A3rZuz=~@6`{=PICZvO zoFyUar#SwTE_SX;(okm>?y6;>)8cJNI?rPc6YsiF@@XgjgR4wJWb5S97bhL>B7VHp z<6(AJR=M^_mULF1&$2!~my|1BP|IsBEn6oT*xYa1{bTJt_uk*fd7kHe-{1S(bMwQ)mRJxS zhy((`A~=XI#K%CxV`hrKQz$*T_+XC(#9)y~JeDp&VFFi%#KAzYLXrRrVTmjwTP9HKbvaKI=mG+^|h00iPjQGMn@z zsTe^xz(Y_N@S-rtQW^*XOeO{N^kOnW4}eYs=~NniGs&PQ~6Dol4oSt>Bs|kEB`8#1WtHl&W5N%Ns*$LuAcbZqX&fjJ{6AEo_=;9zLik(0|0%2% zWvF1P5LP3ps1$Epyt5&c3gV%#1Vc~}f~*=p#qdM~L)3|g3gAUD0k>$mQii0f7kS2jY*VJIGE2S;R+PFTn72mnOq-`;pNQ@WPo5mfIriR%K{lJAAcsuWASO@Ts|UA zRlrJYoGbgrWlqR7SV5t}BlBTYo(9VTQA7cJE*X+foC{+@y)mwA;#@o@=4IJi)(~Ex~-QNYnMKh>h5QcG-#&bHK>@Y&~%KH_QH(yzsthL!)9d4r#X)kNy(mx*UJA7cDy6Lo4y$v0Cc7Hf6lyj;H3D?j$ziI=cYL|-RF`w2tuZ}s~>)xVV(bCPjBa2j`-)Ftoadx){Ue5 zs5bkz$c2;CIkb=H=$$&&$*Z>fOPfivuD=4!r%egXxt(3mV%FkOd@>@|>AS|oRo`D3 zycw zz|KXBiPuYg<6@iT=K`-aSI@uAb9483eMlwlNvQQI&mAay5nNVrk?+2sw@eWt_Hl07 z@a&k^ff|mKTCSvgvJMZ8!WlH{$xtxvH4inc^7MlalMK&en$s@c-V&6vZgdVYFRJObc)*JJcUIZ6 zV;i^D*{$oB46yCA>v<={y~*H}&hX9%jO<-!27^3>3p#buk#Hr|QJ8#0w~b|R4d`4tFzbA!Ur|jO zN2eXW^tQgks6F5L_oA8Iwfee?iASv+2|A|T{aclL&#uvhwaaoey0BB{SNIX%FALod gIN7#bYxrbFBWwxruccDsUKxH?!2x0XDt~d#Ka%^z4*&oF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/icon_clean.png b/app/src/main/res/drawable-hdpi/icon_clean.png new file mode 100644 index 0000000000000000000000000000000000000000..df986dfbddb4efeca15db5ae642fb0ba9a42892d GIT binary patch literal 6255 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 aT(=}F7B zO>28s+Di+yQSK3{i}P$xooaS+a>~7(L%4^->KB<;Y-Mk6Z{{*bRK!oj zwnJfhK`8G|UcmdOxRCr}iMcv=%Qtej@iLkrYuw9UF**18r7OkJK0NVRSngi^T(C}zJ$Vl|4aJrI`{l$jK7S--KlW`S*b)iv=;!6oZNsYSbs%#&m{eg@= zk9_g4LQZB^PfzxlVD~t!5o_1KgB75lK^G-ni z@sOBNKKY4;+r1{kS6verGa9Y)r|;~UXXQ#t?>{hWa(du!Vfz6>iSjkV6?~du#r<2I zZz(PoEf0ll<>rPPZVbeLd#>Ln6dH#qF@~S;D=V01wfT#U@?LGHprICLeYM^LJ7iPe zgs^HtAtQEnFGK(K=(t4fR}T~JLaTQkBURgA>+k5TDEG|hv|b4T&r3EeC|yY|e(dTI zWeSNZx66iX&vz+5PKEvrskSyUeQ$0Ykr(^Pc-FofufSz<>MM7MZM`Jt>lrPeBKoQ= z(=QO%Y%if~ru3>6h+DJWvo-1`2V*g4SGxn~$4mzfrQ?PQ6uq0-0GA+&Kn=Qy9@@QtQJt=8^-pRZMSO1t0P z2Ti`JWL`&AT@l(M!58y7x;<#tvO=#Yk(K34OzJvf8^~K7}aFX@yFGu?AbBRH}3yIH0Hw2&+?|u znFfQgAqhQM=Za$Ejoxz89$q^dU)bi)@1^nKnWj|{-mz)Dy!r%2HPnyzx&&(Ixk>}6 zWT+Ok2LOS+J~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/icon_student_id.png b/app/src/main/res/drawable-hdpi/icon_student_id.png new file mode 100644 index 0000000000000000000000000000000000000000..6d65d2737f10df4025ff2c7360e38d6927e12695 GIT binary patch literal 2385 zcmaJ@c|4Ts9v|jnVmP|?EpJ0Y$1Kc@naSAAAv28OASE+qUKwU<=9RG&g`_BwQbbZx zNy|x#WXaOef=eprRF*_4m1{dk+nwp8bN{&A_w&B*^E|)L_xt^=e>^$NfSh1L=6u{?EQDFoImLc&1 zWBIMNUP1(WNN%N;3upe1SmmRMcNV zg)^9dmskn{1hkU_7mLFIL?Rl8ClHCa9|1=!&JlxEyhH~aoT2$}`Wn3v= z0`bKnK&i-y7AHVdlp@leM$%SDr9~iv@&BPh;WxAlVu63h z`#*(cAxRPt!vbaE1Swb1xEL#?D+$F*3UVN^G(;>GELM>jD~80fSg{1~3MK-!VSEu! zoG7#Vf@d%&ej*vf5ph93Zz@Wmfaddg6i>Vt-qDAKbM~M);cz}aBs|&6i{|9%>4fvb z63EVrTyHTqK?sVVMK14euH$#P%25zX6rR07DStD_qe;a=;7iIB{&!>Xp?z2HE0_2E zSg_yaVidt(l#TtbMlYHa)1%ye8(YQU+u(yD#k5NmW9?90Hv@yIwflK{gvft;UD~~; zk7Ryp@_66m&bSjrZ1QD|GOoDsmK_0tzZO$@d-6vx;WkV~2 zmMoCqx45<@-DAfEzr$}9cmxe+Ha2HA(r%=gH9jrx3w-y+B!7xpOd0Gk(!JShpIh9+ zUY%CZFom#ffn~f2o_kx>?Yl5(Fc^6`_3ldGz`gJ;HnZaOU^&hD+O-!jmWF<*V60n= z$+v-b0td-(llcvl#qgDhlw>I2T78%DN{nvC3Qvo1Y5p0?p_>OzSP z_6FS+ezBJn+O~vr)w%`R4fBm>QLtS$c!aJtKuNipbbi5{dw9PNoumoOng|~1F?-cJ zA{?|Y?0mxL^pCQ8xq-LZU&DQ!PV6gK_3^{@#@xXXgg0{i27bNM)DNC{QJ?b={-1zc z2kni-gT~dP@gZ1R91huazAUb)~4Oy+BW!&RV9vXfv1cM&OcE72!VRYk?q43^UX-X%hea#I4V2x zLQRJSdB}4;MyI1)Ag%r-GyDFrGQN!Dy6xeI6(x{i+30xrE@`_8Y0#LEy-B#&oobW9 ze0-$_TzP*)(qa5^A1<@D#bRg;`C|10&`G-jZ@4vY$EI0XeMFwxV|@!c@#n2CPny=3 zG|{`)xGRzYBF|X8i@0*ia=heir zq5o197j!b^TC**jXpj#2Mr9w#Ug)7R?`gtw-AKTM8 z4U>*#?T*kfqVvzvpKMHz1ETEf%P4ieO?5K0$~#59t_6|@4N(YL&s+^y*qFdq$4@21 z}ovf)mx$$m4dvim;ykNLyRGo_DX_h!AS<}`%_ zom+No?o7ruyOw~Woeyg6!BqA%wrj?7O<&ov2=~&Q+kFhYAvXG#?tMbE6>_x zx|>Ep6;6=f%(r|#d+@+|y8}A)n}+xK)wV69UkJdq2WO5o z>H&xkN4ro)A4v{{KIze#G(;bN$4j{1+S-^8LWAjK-yf^-kfJ)Q~Xq-!}iaOENjiV^+?1aGS@ec2Ai9i?7u$;JnV5xxb}!D z=z4Y>(PSyx87~MQ)G&HH9!$m;u~$_=uF|wsw#+S-vopbT*R=4T4w_hg_~F$HR+7NC m@{?T^(Kj=9=+^bE2rSH?HTx>c=t`aPlH=zS;9cv<-u@r&z0}zN literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/icon_update.png b/app/src/main/res/drawable-hdpi/icon_update.png new file mode 100644 index 0000000000000000000000000000000000000000..39baf9c9533e4e594cae9bbd05291ca53608ca1a GIT binary patch literal 3458 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 OUy&`w0bO9}8TlVa=M>if literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index 40e835f..0bcfa98 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -42,32 +42,6 @@ app:layout_constraintStart_toEndOf="@+id/iv_back" app:layout_constraintTop_toTopOf="parent" /> - - -