feat(aoleyuntest): 接入 Allwinner CubeMdm 管理能力
在 AoleyunTestActivity 中集成 AllwinnerCubeMdmManager,为全志平台设备添加 MDM 管控支持,包括 USB 模式、默认桌面、SD 卡、开发者模式、导航栏、状态栏、热点、蓝牙、恢复出厂、默认输入法和浏览器等设置,并新增随机通知与电源键长按管控功能。
This commit is contained in:
@@ -302,9 +302,33 @@ android {
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
MT6789 {
|
||||
storeFile file("keystore/MT6789.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "mt6789"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
MT6789Debug.initWith(debug)
|
||||
MT6789Debug {
|
||||
buildConfigField "String", "platform", '"G12NL"'
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.MT6789
|
||||
}
|
||||
|
||||
MT6789Release.initWith(release)
|
||||
MT6789Release {
|
||||
buildConfigField "String", "platform", '"G12NL"'
|
||||
signingConfig signingConfigs.MT6789
|
||||
}
|
||||
|
||||
QZ15Debug.initWith(debug)
|
||||
QZ15Debug {
|
||||
buildConfigField "String", "platform", '"QZA15"'
|
||||
@@ -594,7 +618,8 @@ dependencies {
|
||||
/*加了会报错,暂时注释掉*/
|
||||
// implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
compileOnly files('libs/framework.jar')
|
||||
compileOnly files('libs/qz_cubemdm_sdk_v1.0.0_1.8.jar')
|
||||
// compileOnly files('libs/qz_cubemdm_sdk_v1.0.0_1.8.jar')
|
||||
compileOnly files('libs/qz_cubemdm_sdk_v1.0.1_1.8.jar')
|
||||
|
||||
implementation project(':viewlibrary')
|
||||
implementation project(path: ':niceimageview')
|
||||
|
||||
BIN
app/keystore/MT6789.keystore
Normal file
BIN
app/keystore/MT6789.keystore
Normal file
Binary file not shown.
BIN
app/libs/qz_cubemdm_sdk_v1.0.1_1.8.jar
Normal file
BIN
app/libs/qz_cubemdm_sdk_v1.0.1_1.8.jar
Normal file
Binary file not shown.
@@ -4,6 +4,7 @@ import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.StatusBarManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -17,8 +18,6 @@ import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
@@ -31,15 +30,17 @@ import com.ttstd.ttutils.R;
|
||||
import com.ttstd.ttutils.activity.main.MainActivity;
|
||||
import com.ttstd.ttutils.base.mvvm.BaseMvvmActivity;
|
||||
import com.ttstd.ttutils.databinding.ActivityAoleyunTestBinding;
|
||||
import com.ttstd.ttutils.manager.AllwinnerCubeMdmManager;
|
||||
import com.ttstd.ttutils.receiver.ShortcutReceiver;
|
||||
import com.ttstd.ttutils.utils.java.ApkUtils;
|
||||
import com.ttstd.ttutils.utils.java.JgyUtils;
|
||||
import com.ttstd.ttutils.utils.java.ToastUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel, ActivityAoleyunTestBinding> {
|
||||
private static final String TAG = "AoleyunTestActivity";
|
||||
@@ -270,6 +271,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
usbIntent.setPackage("com.android.settings");
|
||||
}
|
||||
sendBroadcast(usbIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setUsbStatus(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void setUsbMtp(View view) {
|
||||
@@ -282,6 +286,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
usbIntent.setPackage("com.android.settings");
|
||||
}
|
||||
sendBroadcast(usbIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setUsbStatus(1);
|
||||
}
|
||||
}
|
||||
|
||||
public void setUsbMidi(View view) {
|
||||
@@ -293,6 +300,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
usbIntent.setPackage("com.android.settings");
|
||||
}
|
||||
sendBroadcast(usbIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setUsbStatus(2);
|
||||
}
|
||||
}
|
||||
|
||||
public void goLauncher(View view) {
|
||||
@@ -305,6 +315,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("className", "com.android.launcher3.Launcher");
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultLauncher("com.android.launcher3");
|
||||
}
|
||||
}
|
||||
|
||||
public void setDefaultDop2(View view) {
|
||||
@@ -313,6 +326,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("className", "com.aoleyunos.dop2.activity.main.MainActivity");
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultLauncher("com.aoleyunos.dop2");
|
||||
}
|
||||
}
|
||||
|
||||
public void setDefaultUiuiOs(View view) {
|
||||
@@ -321,6 +337,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("className", "com.android.uiuios.Launcher");
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultLauncher("com.android.uiuios");
|
||||
}
|
||||
}
|
||||
|
||||
public void setDefaultAoleyun(View view) {
|
||||
@@ -329,6 +348,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("className", "com.aoleyun.os.Launcher");
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultLauncher("com.aoleyun.os");
|
||||
}
|
||||
}
|
||||
|
||||
public void openDocumentsui(View view) {
|
||||
@@ -342,10 +364,16 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
|
||||
public void setSdOn(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_sdcard_forbid_on", 0);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setSDEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setSdOff(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_sdcard_forbid_on", 1);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setSDEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void getDeveloperStatu(View view) {
|
||||
@@ -356,10 +384,16 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
|
||||
public void setDeveloperOn(View view) {
|
||||
setDeveloperOptions(0);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDeveloperEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void btDeveloperOff(View view) {
|
||||
setDeveloperOptions(1);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDeveloperEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void getNavigationStatus(View view) {
|
||||
@@ -371,12 +405,18 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
Intent navIntent = new Intent("aole_show_NavigationBar");
|
||||
// Intent navIntent = new Intent("aole_show_NavigationBar").setPackage("com.android.systemui");
|
||||
sendBroadcast(navIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setNavigationStatus(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setNavigationOff(View view) {
|
||||
Intent navIntent = new Intent("aole_hide_NavigationBar");
|
||||
// Intent navIntent = new Intent("aole_hide_NavigationBar").setPackage("com.android.systemui");
|
||||
sendBroadcast(navIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setNavigationStatus(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void showStatusbar(View view) {
|
||||
@@ -397,16 +437,34 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT);//隐藏recent键
|
||||
}
|
||||
|
||||
public void setPowerKeyLongPressEnable(View view) {
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setPowerKeyLongPressEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setPowerKeyLongPressDisable(View view) {
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setPowerKeyLongPressEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void setStatusOn(View view) {
|
||||
Intent navIntent = new Intent("aole_show_statusBar");
|
||||
// Intent navIntent = new Intent("aole_show_statusBar").setPackage("com.android.systemui");
|
||||
sendBroadcast(navIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setStatusBarEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void hideStatusOff(View view) {
|
||||
Intent navIntent = new Intent("aole_hide_statusBar");
|
||||
// Intent navIntent = new Intent("aole_hide_statusBar").setPackage("com.android.systemui");
|
||||
sendBroadcast(navIntent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setStatusBarEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void setCollapseOn(View view) {
|
||||
@@ -425,6 +483,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
|
||||
public void setHotspotOn(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_hotspot_forbid_on", 0);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setWifiHotSpotStatus(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void setHotspotOff(View view) {
|
||||
@@ -432,14 +493,23 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
Intent intent = new Intent("aole_hotspot_close");
|
||||
intent.setPackage("com.android.settings");
|
||||
sendStickyBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setWifiHotSpotStatus(1);
|
||||
}
|
||||
}
|
||||
|
||||
public void setBhtOn(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_bht_forbid_on", 0);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setBluetoothEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setBhtOff(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_bht_forbid_on", 1);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setBluetoothEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void setBtOn(View view) {
|
||||
@@ -460,10 +530,16 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
|
||||
public void setResetOn(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_restore_forbid_on", 0);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setResetFactoryEnable(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setResetOff(View view) {
|
||||
Settings.System.putInt(getContentResolver(), "aole_restore_forbid_on", 1);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setResetFactoryEnable(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void listInputMeth(View view) {
|
||||
@@ -478,6 +554,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("package", getInputMethodId("com.baidu.input"));
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultInputMethod(new ComponentName("com.baidu.input", "com.baidu.input.ImeService").toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void setInputSogou(View view) {
|
||||
@@ -486,6 +565,31 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("package", getInputMethodId("com.sohu.inputmethod.sogou"));
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultInputMethod(new ComponentName("com.sohu.inputmethod.sogou", "com.sohu.inputmethod.sogou.SogouIME").toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void setInputGoogle(View view) {
|
||||
Log.e(TAG, "init: " + getInputMethodId("com.google.android.inputmethod.pinyin"));
|
||||
Intent intent = new Intent("setDefaultInputMethod");
|
||||
intent.putExtra("package", getInputMethodId("com.google.android.inputmethod.pinyin"));
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultInputMethod(new ComponentName("com.google.android.inputmethod.pinyin", "com.google.android.inputmethod.pinyin.PinyinIME").toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void setInputWetype(View view) {
|
||||
Log.e(TAG, "init: " + getInputMethodId("com.tencent.wetype"));
|
||||
Intent intent = new Intent("setDefaultInputMethod");
|
||||
intent.putExtra("package", getInputMethodId("com.tencent.wetype"));
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultInputMethod(new ComponentName("com.tencent.wetype", "com.tencent.wetype.plugin.hld.WxHldService").toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void openUrl(View view) {
|
||||
@@ -501,6 +605,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("package", ("com.quark.browser"));
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultBrowser("com.quark.browser");
|
||||
}
|
||||
}
|
||||
|
||||
public void setBrowserOff(View view) {
|
||||
@@ -508,6 +615,9 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
intent.putExtra("package", ("com.android.chrome"));
|
||||
intent.setPackage("com.android.settings");
|
||||
sendBroadcast(intent);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setDefaultBrowser("com.android.chrome");
|
||||
}
|
||||
}
|
||||
|
||||
public void getAppStatus(View view) {
|
||||
@@ -517,13 +627,31 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
|
||||
public void setAppOn(View view) {
|
||||
Settings.System.putString(getContentResolver(), "aole_network_disallow", "com.quark.browser");
|
||||
List<String> appBlackNet = new ArrayList<>();
|
||||
appBlackNet.add("com.quark.browser");
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setBlackNetApp(appBlackNet);
|
||||
}
|
||||
}
|
||||
|
||||
public void setAppOnDuo(View view) {
|
||||
Settings.System.putString(getContentResolver(), "aole_network_disallow", "com.quark.browser");
|
||||
List<String> appBlackNet = new ArrayList<>();
|
||||
appBlackNet.add("com.quark.browser");
|
||||
appBlackNet.add("com.tencent.mtt");
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setBlackNetApp(appBlackNet);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void setAppOff(View view) {
|
||||
Settings.System.putString(getContentResolver(), "aole_network_disallow", "");
|
||||
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.getInstance().setBlackNetApp(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
public void setNightOn(View view) {
|
||||
sendBroadcast(new Intent(NIGHT_DISPLAY_ENABLED));
|
||||
}
|
||||
@@ -546,10 +674,25 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
// ((BitmapDrawable) getResources().getDrawable(R.drawable.ic_launcher)).getBitmap());
|
||||
addShortCutCompact(AoleyunTestActivity.this);
|
||||
}
|
||||
|
||||
public void addNoti(View view) {
|
||||
sendSimpleNotification();
|
||||
}
|
||||
|
||||
public void addNotiRand(View view) {
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(AoleyunTestActivity.this, CHANNEL_ID)
|
||||
.setSmallIcon(R.mipmap.ic_launcher)
|
||||
.setContentTitle("应用中心正在运行")
|
||||
// .setContentText("测试内容")
|
||||
// .setAutoCancel(false)
|
||||
.setShowWhen(false)
|
||||
// .setOngoing(true)
|
||||
.setOnlyAlertOnce(true)
|
||||
.setPriority(NotificationCompat.PRIORITY_MIN);
|
||||
// notificationId is a unique int for each notification that you must define
|
||||
notificationManager.notify(new Random().nextInt(10000), builder.build());
|
||||
}
|
||||
|
||||
public void notiOff(View view) {
|
||||
Intent statusIntent = new Intent("aole_hide_appinfo");
|
||||
sendBroadcast(statusIntent);
|
||||
@@ -559,6 +702,7 @@ public class AoleyunTestActivity extends BaseMvvmActivity<AoleyunTestViewModel,
|
||||
Intent statusIntent = new Intent("aole_show_appinfo");
|
||||
sendBroadcast(statusIntent);
|
||||
}
|
||||
|
||||
public void setNotiBlackList(View view) {
|
||||
Settings.System.putString(getContentResolver(), "aole_app_info", BuildConfig.APPLICATION_ID);
|
||||
Log.e("bt_noti_black", "onClick: " + Settings.System.getString(getContentResolver(), "aole_app_info"));
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.tencent.android.tpush.XGPushManager
|
||||
import com.tencent.bugly.crashreport.CrashReport
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.ttstd.ttutils.BuildConfig
|
||||
import com.ttstd.ttutils.manager.AllwinnerCubeMdmManager
|
||||
import com.ttstd.ttutils.utils.java.JgyUtils
|
||||
import com.ttstd.ttutils.utils.java.TTUtils
|
||||
import com.ttstd.ttutils.utils.java.ToastUtil
|
||||
@@ -30,6 +31,9 @@ class KotlinApplication : Application() {
|
||||
Toaster.init(this)
|
||||
TTUtils.init(this)
|
||||
JgyUtils.init(this)
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.init(this)
|
||||
}
|
||||
CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", false);
|
||||
|
||||
XGPushConfig.enableDebug(this, true)
|
||||
|
||||
@@ -0,0 +1,396 @@
|
||||
package com.ttstd.ttutils.manager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.cubemdm.cubemdmmanager.CubeMdmManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.ttstd.ttutils.utils.java.JgyUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class AllwinnerCubeMdmManager {
|
||||
private static final String TAG = "AllwinnerCubeMdmManager";
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private static AllwinnerCubeMdmManager INSTANCE;
|
||||
|
||||
private Context mContext;
|
||||
private CubeMdmManager mCubeMdmManager;
|
||||
|
||||
public static void init(Context context) {
|
||||
if (context == null) {
|
||||
throw new RuntimeException("Context is NULL");
|
||||
}
|
||||
if (INSTANCE == null) {
|
||||
INSTANCE = new AllwinnerCubeMdmManager(context);
|
||||
}
|
||||
}
|
||||
|
||||
public static AllwinnerCubeMdmManager getInstance() {
|
||||
if (INSTANCE == null) {
|
||||
throw new IllegalStateException("You must be init AllwinnerCubeMdmManager first");
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
@SuppressLint("WrongConstant")
|
||||
public AllwinnerCubeMdmManager(Context context) {
|
||||
this.mContext = context;
|
||||
this.mCubeMdmManager = (CubeMdmManager) context.getSystemService("cube_mdm");
|
||||
}
|
||||
|
||||
/**
|
||||
* USB数据传输模式开关管控
|
||||
*
|
||||
* @param usbStatus 0:充电模式,1:mtp式,2:midi模式
|
||||
*/
|
||||
public void setUsbStatus(int usbStatus) {
|
||||
Log.e(TAG, "setUsbStatus: usbStatus = " + usbStatus);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setUsbStatus(usbStatus);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用联网联网管控
|
||||
*
|
||||
* @param packageNames 要禁用网络的应用包名列表
|
||||
*/
|
||||
public void setBlackNetApp(List<String> packageNames) {
|
||||
Log.e(TAG, "setBlackNetApp: packageNames = " + packageNames);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setBlackNetApp(packageNames);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用白名单安装总开关
|
||||
*
|
||||
* @param isEnale true:允许安装,false:禁止安转
|
||||
*/
|
||||
public void setInstallPackageEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setInstallPackageEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setInstallPackageEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用安装白名单
|
||||
*
|
||||
* @param packageNames 允许安装的应用包名列表
|
||||
*/
|
||||
public void setInstallPackageWhiteList(List<String> packageNames) {
|
||||
Log.e(TAG, "setInstallPackageWhiteList: packageNames = " + packageNames);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setInstallPackageWhiteList(packageNames);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存储卡管控开关
|
||||
*
|
||||
* @param isEnale true:允许读取SD,false:禁止读取SD
|
||||
*/
|
||||
public void setSDEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setSDEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setSDEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 开发者模式管控开关
|
||||
*
|
||||
* @param isEnale true:允许打开开发者模式,false:禁止打开开发者模式
|
||||
*/
|
||||
public void setDeveloperEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setDeveloperEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setDeveloperEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* WIFI热点管控开关
|
||||
*
|
||||
* @param wifiStatus 0:打开,1:关闭
|
||||
*/
|
||||
public void setWifiHotSpotStatus(int wifiStatus) {
|
||||
Log.e(TAG, "setWifiHotSpotStatus: wifiStatus = " + wifiStatus);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setWifiHotSpotStatus(wifiStatus);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 蓝牙文件传输管控开关
|
||||
*
|
||||
* @param isEnale true:开启蓝牙功能,false:禁止蓝牙功能
|
||||
*/
|
||||
public void setBluetoothEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setBluetoothEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setBluetoothEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复出厂设置管控开关功能
|
||||
*
|
||||
* @param isEnale true:允许回复出厂设置,false:禁止恢复出厂设置
|
||||
*/
|
||||
public void setResetFactoryEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setResetFactoryEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setResetFactoryEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认桌面管远程设置功能
|
||||
*
|
||||
* @param packageName
|
||||
*/
|
||||
public void setDefaultLauncher(String packageName) {
|
||||
Log.e(TAG, "setDefaultLauncher: packageName = " + packageName);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setDefaultLauncher(packageName);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 强制安装应用名单,包名列表不允许删除
|
||||
*
|
||||
* @param packageNames
|
||||
*/
|
||||
public void setForbidUnInstallPackageList(List<String> packageNames) {
|
||||
Log.e(TAG, "setForbidUnInstallPackageList: packageNames = " + packageNames);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setForbidUnInstallPackageList(packageNames);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统通知栏管控开关
|
||||
*
|
||||
* @param isEnale :true:允许下拉,false:禁止下拉
|
||||
*/
|
||||
public void setStatusBarEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setStatusBarEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setStatusBarEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统导航条管控开关
|
||||
*
|
||||
* @param isShow :true:显示导航栏,false:隐藏导航栏
|
||||
*/
|
||||
public void setNavigationStatus(boolean isShow) {
|
||||
Log.e(TAG, "setNavigationStatus: isShow = " + isShow);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setNavigationStatus(isShow);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统默认应用设置管控
|
||||
*
|
||||
* @param componentName:组件名(包名/类名)
|
||||
*/
|
||||
public void setDefaultInputMethod(String componentName) {
|
||||
Log.e(TAG, "setDefaultInputMethod: componentName = " + componentName);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setDefaultInputMethod(componentName);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统默认应用设置管控
|
||||
*
|
||||
* @param packageName
|
||||
*/
|
||||
public void setDefaultBrowser(String packageName) {
|
||||
Log.e(TAG, "setDefaultBrowser: packageName = " + packageName);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setDefaultBrowser(packageName);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用/禁用 HOME键
|
||||
*
|
||||
* @param isEnale :true:启用home键,false:禁用home键
|
||||
*/
|
||||
public void setHomeEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setHomeEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setHomeEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用/禁用 RECENT键
|
||||
*
|
||||
* @param isEnale :true:启用RECENT键,false:禁用RECENT键
|
||||
*/
|
||||
public void setRecentsEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setRecentsEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setRecentsEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 电源键按钮的长按禁止和长按启用
|
||||
*
|
||||
* @param isEnale:true:启用电源键长按,false:禁用电源键长按
|
||||
*/
|
||||
public void setPowerKeyLongPressEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setPowerKeyLongPressEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setPowerKeyLongPressEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用消息通知管控开关,关闭时所有应用都不能发送通知。
|
||||
* 打开时,不允许发出通知的包名列表不能发送通知,类似于黑名单
|
||||
*
|
||||
* @param isEnale:true:允许显示通知,false:禁止所有通知显示
|
||||
*/
|
||||
public void setNotificationEnable(boolean isEnale) {
|
||||
Log.e(TAG, "setNotificationEnable: isEnale = " + isEnale);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setNotificationEnable(isEnale);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定应用消息通知栏管控开关
|
||||
*
|
||||
* @param packageNames:不允许发出通知的包名列表
|
||||
*/
|
||||
public void setDisallowNotification(List<String> packageNames) {
|
||||
Log.e(TAG, "setDisallowNotification: packageNames = " + packageNames);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setDisallowNotification(packageNames);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用动态权限
|
||||
*
|
||||
* @param packageNames:需要默认权限的包名列表
|
||||
*/
|
||||
public void setDefaultPermissions(List<String> packageNames) {
|
||||
Log.e(TAG, "setDefaultPermissions: packageNames = " + packageNames);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setDefaultPermissions(packageNames);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁止设备打开指定页面
|
||||
*
|
||||
* @param componentNames :package/class页面列表
|
||||
* @param disable :true:禁止打开页面,false:允许打开页面
|
||||
*/
|
||||
public void setComponentDisable(List<String> componentNames, boolean disable) {
|
||||
Log.e(TAG, "setComponentDisable: componentNames = " + componentNames);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
if (mCubeMdmManager != null) {
|
||||
mCubeMdmManager.setComponentDisable(componentNames, disable);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "setUsbStatus: Not Allwinner Platform");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,7 +107,10 @@ public class JgyUtils {
|
||||
} else if (AH6016Tag.equalsIgnoreCase(platform)) {
|
||||
Log.i(TAG, "checkAppPlatform: " + "AH6016");
|
||||
return AH6016Platform;
|
||||
} else {
|
||||
}else if (allwinner_U1302.equalsIgnoreCase(platform)) {
|
||||
Log.i(TAG, "checkAppPlatform: " + "QZA15");
|
||||
return U1302Platform;
|
||||
} else {
|
||||
Log.i(TAG, "checkAppPlatform: " + "没有数据");
|
||||
return UnknowPlatform;
|
||||
}
|
||||
|
||||
@@ -352,6 +352,34 @@
|
||||
android:onClick="@{click::hideStatusbarRecent}"
|
||||
android:singleLine="true"
|
||||
android:text="Recent" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="visible">
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setPowerKeyLongPressEnable}"
|
||||
android:singleLine="true"
|
||||
android:text="电源键 长按 开" />
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setPowerKeyLongPressDisable}"
|
||||
android:singleLine="true"
|
||||
android:text="电源键 长按 关" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -572,7 +600,7 @@
|
||||
android:hint="测试" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_input_on"
|
||||
android:id="@+id/bt_input_baidu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
@@ -582,12 +610,31 @@
|
||||
android:text="baidu" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_input_off"
|
||||
android:id="@+id/bt_input_sogo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setInputSogou}"
|
||||
android:text="sogou" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_input_google"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setInputGoogle}"
|
||||
android:text="google" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_input_wetype"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setInputWetype}"
|
||||
android:text="wetype" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -643,7 +690,7 @@
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:text="APP联网" />
|
||||
android:text="APP联网黑名单" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_app_statu"
|
||||
@@ -661,7 +708,17 @@
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setAppOn}"
|
||||
android:singleLine="true"
|
||||
android:text="添加" />
|
||||
android:text="添加夸克" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_app_duo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::setAppOnDuo}"
|
||||
android:singleLine="true"
|
||||
android:text="添加夸克" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_app_off"
|
||||
@@ -765,6 +822,16 @@
|
||||
android:singleLine="true"
|
||||
android:text="通知" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_add_noti_rand"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:maxLines="1"
|
||||
android:onClick="@{click::addNotiRand}"
|
||||
android:singleLine="true"
|
||||
android:text="通知" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bt_noti_off"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
22
build.gradle
22
build.gradle
@@ -3,11 +3,14 @@ buildscript {
|
||||
ext.kotlin_version = "1.4.10"
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
maven { url "https://jitpack.io" }
|
||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
|
||||
// mavenCentral()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven { url "https://jitpack.io" }
|
||||
maven { url 'https://developer.huawei.com/repo/' }
|
||||
maven { url 'https://maven.aliyun.com/repository/central' }
|
||||
maven { url "https://maven.aliyun.com/repository/jcenter" }
|
||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||
maven { url 'https://maven.aliyun.com/repository/google' }
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:3.6.4"
|
||||
@@ -34,11 +37,14 @@ allprojects {
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
maven { url "https://jitpack.io" }
|
||||
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
|
||||
// mavenCentral()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven { url "https://jitpack.io" }
|
||||
maven { url 'https://developer.huawei.com/repo/' }
|
||||
maven { url 'https://maven.aliyun.com/repository/central' }
|
||||
maven { url "https://maven.aliyun.com/repository/jcenter" }
|
||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||
maven { url 'https://maven.aliyun.com/repository/google' }
|
||||
}
|
||||
gradle.projectsEvaluated {
|
||||
tasks.withType(JavaCompile) {
|
||||
|
||||
@@ -11,6 +11,8 @@ android {
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
MT6789Debug {}
|
||||
MT6789Release {}
|
||||
QZ15Debug {}
|
||||
QZ15Release {}
|
||||
seewoDebug {}
|
||||
|
||||
@@ -25,6 +25,8 @@ android {
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
MT6789Debug {}
|
||||
MT6789Release {}
|
||||
QZ15Debug {}
|
||||
QZ15Release {}
|
||||
seewoDebug {}
|
||||
|
||||
Reference in New Issue
Block a user