version:1.0

update:2021-10-16 18:50:25
fix:增减检查弹窗,修复第一次启动不能自动下载
add:切换到奥乐云平台
This commit is contained in:
2021-10-16 18:51:47 +08:00
parent 3018660216
commit a4c68f0b37
58 changed files with 1028 additions and 194 deletions

View File

@@ -0,0 +1,529 @@
package com.aoleyun.sn.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.base.BaseActivity;
import com.aoleyun.sn.service.MainService;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.ExampleUtil;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.Logutils;
import com.aoleyun.sn.utils.SaveListUtils;
import com.aoleyun.sn.utils.SysSettingUtils;
import com.aoleyun.sn.utils.ToastUtil;
import com.aoleyun.sn.utils.Utils;
import com.blankj.utilcode.util.NetworkUtils;
import com.google.gson.JsonObject;
import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.jpush.android.api.JPushInterface;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
public class CheckNetActivity extends BaseActivity implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = CheckNetActivity.class.getSimpleName();
private MainPresenter mPresenter;
private boolean netWorkIsRunning = false;
private boolean updateApp = false;
//jiguang
public static boolean isForeground = false;
//for receive customer msg from jpush server
private CheckNetActivity.MessageReceiver mMessageReceiver;
public static final String MESSAGE_RECEIVED_ACTION = "com.aoleyun.sn.MESSAGE_RECEIVED_ACTION";
public static final String KEY_TITLE = "title";
public static final String KEY_MESSAGE = "message";
public static final String KEY_EXTRAS = "extras";
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_checknet);
// }
@Override
public int getLayoutId() {
return R.layout.activity_checknet;
}
@Override
public void initView() {
ButterKnife.bind(this);
mPresenter = new MainPresenter(this);
mPresenter.attachView(this);
mPresenter.setProvider(this);
JGYUtils.startServices(CheckNetActivity.this);
Logutils.e(TAG, "initView: " + "start request");
mPresenter.getFirstConnect();
NetworkUtils.registerNetworkStatusChangedListener(this);
getDevicesInfo();
}
private void getDevicesInfo() {
String sn = Utils.getSerial();
checkSNError(sn);
String macaddr = Utils.getAndroid10MAC(this);
if (TextUtils.isEmpty(macaddr)) {
} else {
mPresenter.getQRImage(macaddr);
}
Logutils.e(TAG, "getDevicesInfo: CustomVersion: " + Utils.getCustomVersion());
Logutils.e(TAG, "getDevicesInfo: RomVersion: " + Utils.getRomVersion());
}
private void checkSNError(String sn) {
//sn长度12位
if (sn.length() != 12) {
showSNErrorDialog("设备SN号码格式错误");
} else {
Logutils.e(TAG, "checkSNError: " + sn);
}
//检查平台和sn是否对应
if (JGYUtils.getInstance().checkSNPlatform(sn) != JGYUtils.getInstance().checkAppPlatform()) {
showSNErrorDialog("SN数据与平台不符请联系管理员");
}
//设置极光推送标签
JGYUtils.getInstance().getAppPlatform(platform -> mPresenter.setJpushPlatformTags(platform));
}
private void showSNErrorDialog(String content) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(content);
builder.setTitle("注意:");
builder.setIcon(R.mipmap.ic_launcher);
builder.setCancelable(true);
//设置正面按钮
builder.setPositiveButton("确定", (dialog, which) -> dialog.dismiss());
AlertDialog dialog = builder.create(); //创建AlertDialog对象
if (!this.isFinishing() && !dialog.isShowing()) {
dialog.show();
}
}
//执行所有接口耗时
long timeMillis;
@Override
public void initData() {
JPushInterface.init(this);
registerMessageReceiver();
Logutils.e("getMacAddress", Utils.getAndroid10MAC(this));
timeMillis = SystemClock.elapsedRealtime();
startService(new Intent(CheckNetActivity.this, MainService.class));
mPresenter.getLockedState();
mPresenter.getStudesInfo();
}
@Override
public void setQRImage(Bitmap qrImage) {
}
@Override
public void setBatchText(String text, int visibility) {
}
@Override
public void setClassText(String text, int visibility) {
}
@Override
public void setNumberText(String text, int visibility) {
}
@Override
public void setNameText(String text, int visibility) {
}
/**
* @param loocked 后台1是锁定底层0是锁定
*/
@Override
public void setLockedState(boolean loocked) {
//发送设备mac地址和信息
mPresenter.sendMACAddress();
//设置极光推送别名
mPresenter.setJpushAlias();
if (loocked) {
//上传APP信息
ApkUtils.getAppInfo(this);
if (netWorkIsRunning || MainService.netWorkIsRunning) {
//如果正在执行,不执行
return;
}
SaveListUtils.getList();
//获取系统管控
mPresenter.setJpushTags();
netWorkIsRunning = true;
} else {
netWorkIsRunning = false;
SysSettingUtils.setEnableSetting(this);
}
}
/**
* 首次使用默认关闭所有功能
*
* @param state
*/
@Override
public void setFirstConnect(boolean state) {
Logutils.e(TAG, "isFirstConnect: " + "end request");
if (state) {
mPresenter.setDisableSetting();
} else {
}
}
@Override
public void sendMACFinished() {
mPresenter.updateDeviceInfo();
}
@Override
public void updateDeviceInfoFinished() {
mPresenter.getSnTimeControl();
}
@Override
public void getSnTimeControlFinished() {
mPresenter.getEBagCode();
}
@Override
public void getEBagCodeFinished() {
}
@Override
public void setAliasFinished() {
mPresenter.checkStoreUpdate();
}
@Override
public void setJpushPlatformTagsFinished() {
}
@Override
public void checkStoreUpdateFinished() {
mPresenter.checkInfoUpdate();
}
@Override
public void checkInfoUpdateFinished() {
mPresenter.checkTestUpdate();
}
@Override
public void checkTestUpdateFinished() {
}
@Override
public void buttonCheckUpdateFinished(boolean update, JsonObject jsonObject) {
this.updateApp = !update;
if (update) {
showDialog(jsonObject);
} else {
Observable.timer(5000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> ToastUtil.show("已经是最新版本"));
}
}
/**
* @param noTag 为空没有错误都返回true
* 设备可以没有批次,但是没有批次相当于没有数据了,就不执行下面的请求了
*/
@Override
public void setTagsFinished(boolean noTag) {
if (noTag) {
Log.e(TAG, "setTagsFinished: " + "not set tag");
netWorkIsRunning = false;
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - timeMillis) + " ms");
} else {
mPresenter.getSystemSettingbegin();
}
}
private void showDialog(JsonObject jsonObject) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("更新:");
builder.setMessage("检测到有新版本,是否更新?");
builder.setIcon(R.mipmap.ic_launcher);
builder.setCancelable(true);
//设置正面按钮
builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
JGYUtils.getInstance().installAPK(jsonObject);
dialog.dismiss();
}
});
//设置反面按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
}
@Override
public void getSystemSettingbegin() {
mPresenter.getAppLimit();
}
@Override
public void getAppLimitFinished(String packageList) {
mPresenter.getDeviceBatch(packageList);
}
@Override
public void getDeviceBatchFinished() {
mPresenter.getForceDownload();
}
@Override
public void getForceDownloadFinished() {
mPresenter.getBrowserList();
}
@Override
public void getBrowserListFinished(String whitelist) {
mPresenter.getBrowserBookmarks(whitelist);
}
@Override
public void getBrowserBookmarksFinished() {
mPresenter.getBrowserWhiteList();
mPresenter.getDesktopIcon();
}
@Override
public void getDesktopIconFinished() {
mPresenter.getAppAutoStartUpdateAndNet();
}
@Override
public void getAppAutoStartUpdateAndNetFinished() {
mPresenter.getAppIDControl();
}
@Override
public void getAppIDControlFinished() {
mPresenter.setAppinsideWeb();
}
@Override
public void setAppinsideWebFinished() {
mPresenter.setSystemSetting();
}
@Override
public void setSystemSettingFinished() {
mPresenter.getDefaultApp();
}
@Override
public void setDefaultAppFinished() {
mPresenter.getROMApp();
}
@Override
public void getROMAppFinished() {
mPresenter.getDeveloper();
}
@Override
public void getDeveloperFinished() {
mPresenter.setLogoImg();
}
@Override
public void setLogoImgFinished() {
mPresenter.setTopApp();
}
@Override
public void setTopAppFinished() {
mPresenter.getDefaultDesktop();
}
@Override
public void getDefaultDesktopFinished() {
netWorkIsRunning = false;
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - timeMillis) + " ms");
}
@Override
public void setScreenLockStateFinished(boolean locked, String tips) {
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onPause() {
isForeground = false;
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
isForeground = true;
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
JGYUtils.startServices(CheckNetActivity.this);
NetworkUtils.unregisterNetworkStatusChangedListener(this);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
lazyExit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private long mPreClickTime;
private void lazyExit() {
if (System.currentTimeMillis() - mPreClickTime > 3000) {
ToastUtil.show("再按一次,退出");
mPreClickTime = System.currentTimeMillis();
} else {
finish();
}
}
private void setStoreUpdateListener(View view) {
ObservableOnSubscribe<View> mObservableOnSubscribe = new ObservableOnSubscribe<View>() {
@Override
public void subscribe(@NonNull ObservableEmitter<View> emitter) throws Exception {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (updateApp) {
ToastUtil.show("你已经检查过更新,请稍后再试");
} else {
emitter.onNext(view);
}
}
});
}
};
Observer<View> mObserver = new Observer<View>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Logutils.e("mObserver", "onSubscribe");
}
@Override
public void onNext(@NonNull View view) {
Logutils.e("mObserver", "onNext");
ToastUtil.show("正在检查更新");
}
@Override
public void onError(@NonNull Throwable e) {
Logutils.e("mObserver", "onError");
onComplete();
}
@Override
public void onComplete() {
Logutils.e("mObserver", "onComplete");
}
};
Observable.create(mObservableOnSubscribe)
.throttleFirst(10, TimeUnit.SECONDS)
//这句很关键这是RxJava中的操作符在规定时间内观察者不在接收被观察者发送的事件
.subscribe(mObserver);
}
//jiguang
public void registerMessageReceiver() {
mMessageReceiver = new CheckNetActivity.MessageReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MESSAGE_RECEIVED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
}
@Override
public void onDisconnected() {
Log.e("OnNetworkStatusChangedListener", "onDisconnected: ");
}
@Override
public void onConnected(NetworkUtils.NetworkType networkType) {
Log.e("OnNetworkStatusChangedListener", "onConnected: ");
timeMillis = SystemClock.elapsedRealtime();
//直接获取数据
mPresenter.getLockedState();
}
public static class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
String messge = intent.getStringExtra(KEY_MESSAGE);
String extras = intent.getStringExtra(KEY_EXTRAS);
StringBuilder showMsg = new StringBuilder();
showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
if (!ExampleUtil.isEmpty(extras)) {
showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
}
}
} catch (Exception e) {
}
}
}
}