This commit is contained in:
2019-12-25 11:28:10 +08:00
commit cdd3d43ae3
87 changed files with 16373 additions and 0 deletions

View File

@@ -0,0 +1,447 @@
package com.info.sn;
import android.app.ActivityManager;
import android.app.Application;
import android.app.usage.UsageStats;
import android.app.usage.UsageStatsManager;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Environment;
import android.provider.Settings;
import android.util.Log;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.task.DownloadTask;
import com.blankj.utilcode.util.NetworkUtils;
import com.info.sn.network.api.HTTPInterface;
import com.info.sn.utils.ApkUtils;
import com.info.sn.utils.LogUtils;
import com.info.sn.utils.SPUtils;
import com.info.sn.utils.ToastUtil;
import com.lzy.okgo.OkGo;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
import cn.jpush.android.api.CustomMessage;
public class MyApplication extends Application implements NetworkUtils.OnNetworkStatusChangedListener {
public static Context context;
private static MyApplication app;
@Override
public void onCreate() {
super.onCreate();
app = this;
ToastUtil.init(this);
context = getApplicationContext();
ToastUtil.init(this);
OkGo.getInstance().init(this);
NetworkUtils.registerNetworkStatusChangedListener(this);
Aria.init(this);
Aria.download(this).register();
Aria.download(this).resumeAllTask();
}
@Override
public void onTerminate() {
super.onTerminate();
NetworkUtils.unregisterNetworkStatusChangedListener(this);
}
public static MyApplication getInstance() {
return app;
}
public static Context getAppContext() {
if (context == null) {
context = getAppContext();
}
return context;
}
public static String getTaskPackname() {
String currentApp = "CurrentNULL";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager usm = (UsageStatsManager) context.getSystemService("usagestats");
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time);
if (appList != null && appList.size() > 0) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : appList) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
} else {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();
currentApp = tasks.get(0).processName;
}
// LogUtils.e("TAG", "Current App in foreground is: " + currentApp);
return currentApp;
}
/**
* 实时获取电量
*/
public static int getSystemBattery() {
int level = 0;
Intent batteryInfoIntent = context.getApplicationContext().registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
level = batteryInfoIntent.getIntExtra("level", 0);
int batterySum = batteryInfoIntent.getIntExtra("scale", 100);
int percentBattery = 100 * level / batterySum;
LogUtils.i("getSystemBattery", "level = " + level);
LogUtils.i("getSystemBattery", "batterySum = " + batterySum);
LogUtils.i("getSystemBattery", "percent is " + percentBattery + "%");
return percentBattery;
}
//定义接收极光推送消息的类型。
//1.获取设备在线信息
// 2.获取当前正在运行得应用和电量
// 3.数据线传输管控
// 4.TF卡管控
// 5.蓝牙管控
// 6.浏览器上网管控
// 7.应用联网管控
// 8.应用锁管控
// 9.强制安装应用
// 10.强制卸载应用
private static final String JIGUANG_GET_DRIVELINE = "1";
private static final String JIGUANG_GET_STARTTIME = "2";
private static final String JIGUANG_USB_STATE = "3";
private static final String JIGUANG_TFCARD_STATE = "4";
private static final String JIGUANG_BLUETOOTH_STATE = "5";
private static final String JIGUANG_BROWSER_URLPATH = "6";
private static final String JIGUANG_APP_NETWORKSTATE = "7";
private static final String JIGUANG_APP_LOCKEDSTATE = "8";
private static final String JIGUANG_FORCE_INSTALLAPK = "9";
private static final String JIGUANG_FORCE_UNINSTALLAPK = "10";
synchronized public void manageCustomMessage(CustomMessage customMessage) {
String sn_id = (String) SPUtils.get(context, "sn_id", "-1");
String member_id = (String) SPUtils.get(context, "member_id", "-1");
if (customMessage == null) {
LogUtils.e("jiguang", "customMessage is NULL");
} else {
String MESSAGE = customMessage.message;
//MESSAGE用作判断
String TITLE = customMessage.title;
String CONTENT_TYPE = customMessage.contentType;
String EXTRA = customMessage.extra;
LogUtils.e("EXTRA", EXTRA);
switch (MESSAGE) {
case JIGUANG_GET_DRIVELINE:
HTTPInterface.getDriveState(member_id, sn_id);
break;
case JIGUANG_GET_STARTTIME:
sendStartTime(EXTRA);
break;
case JIGUANG_USB_STATE:
setUsbState(EXTRA);
break;
case JIGUANG_TFCARD_STATE:
setTfcardState(EXTRA);
break;
case JIGUANG_BLUETOOTH_STATE:
setBluetoothState(EXTRA);
break;
case JIGUANG_BROWSER_URLPATH:
setBrowserUrlpath(EXTRA);
break;
case JIGUANG_APP_NETWORKSTATE:
setAppNetworkstate(EXTRA);
break;
case JIGUANG_APP_LOCKEDSTATE:
setAppLockedstate(EXTRA);
break;
case JIGUANG_FORCE_INSTALLAPK:
intallApk(EXTRA);
break;
case JIGUANG_FORCE_UNINSTALLAPK:
unintallApk(EXTRA);
break;
}
}
}
synchronized private void defaults(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
String packageName = extra.getString("package");
int is_network = extra.getInt("is_network");
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("defaults", e.getMessage());
}
} else {
ToastUtil.debugShow("defaults jsonArray is NULL");
}
}
//USB数据功能管控
//仅充电usb_charge
//MTP模式usb_mtp
//Midi模式usb_midi
synchronized public static void sendStartTime() {
int battery = getSystemBattery();
HTTPInterface.sendStartTime(getAppContext(), 0, getTaskPackname(), battery, "111");
}
synchronized private void sendStartTime(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
String random = extra.getString("random");
int battery = getSystemBattery();
HTTPInterface.sendStartTime(getAppContext(), 0, getTaskPackname(), battery, random);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
synchronized private void setUsbState(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
int is_dataline = extra.getInt("is_dataline");
if (is_dataline == 1) {
boolean qch_usb_choose = Settings.System.putString(getContentResolver(), "qch_usb_choose", "usb_charge");
LogUtils.e("setUsbState:", Settings.System.getString(getContentResolver(), "qch_usb_choose"));
} else {
boolean qch_usb_choose = Settings.System.putString(getContentResolver(), "qch_usb_choose", "usb_mtp");
LogUtils.e("setUsbState:", Settings.System.getString(getContentResolver(), "qch_usb_choose"));
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("setUsbState", e.getMessage());
}
} else {
ToastUtil.debugShow("setUsbState jsonArray is NULL");
}
}
synchronized private void setTfcardState(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
int is_tf = extra.getInt("is_tf");
boolean qch_sdcard_forbid_on = Settings.System.putInt(getContentResolver(), "qch_sdcard_forbid_on", is_tf);
if (qch_sdcard_forbid_on) {
LogUtils.e("setTfcardState:", Settings.System.getString(getContentResolver(), "qch_sdcard_forbid_on"));
} else {
ToastUtil.debugShow("setTfcardState failed,state:" + is_tf);
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("setTfcardState", e.getMessage());
}
} else {
ToastUtil.debugShow("setTfcardState jsonArray is NULL");
}
}
synchronized private void setBluetoothState(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
int is_bluetooth = extra.getInt("is_bluetooth");
boolean qch_bt_forbid_on = Settings.System.putInt(getContentResolver(), "qch_bt_forbid_on", is_bluetooth);
if (qch_bt_forbid_on) {
LogUtils.e("setBluetoothState:", Settings.System.getString(getContentResolver(), "qch_bt_forbid_on"));
} else {
ToastUtil.debugShow("setBluetoothState failed,state:" + is_bluetooth);
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("setBluetoothState", e.getMessage());
}
} else {
ToastUtil.debugShow("setBluetoothState jsonArray is NULL");
}
}
synchronized private void setBrowserUrlpath(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
String browser = extra.getString("browser");
boolean setBrowserUrlpath = Settings.System.putString(getContentResolver(), "DeselectBrowserArray", browser);
LogUtils.e("setBrowserUrlpath:", String.valueOf(setBrowserUrlpath));
if (setBrowserUrlpath) {
LogUtils.e("getBrowserUrlpath:", Settings.System.getString(getContentResolver(), "DeselectBrowserArray"));
} else {
ToastUtil.debugShow("setBrowserUrlpath failed,url:" + browser);
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("setBrowserUrlpath", e.getMessage());
}
} else {
boolean setBrowserUrlpath = Settings.System.putString(getContentResolver(), "DeselectBrowserArray", "invalid");
ToastUtil.debugShow("setBrowserUrlpath jsonArray is NULL,set default: " + setBrowserUrlpath);
}
}
synchronized private void setAppNetworkstate(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
String package0 = extra.getString("package0");
String package1 = extra.getString("package1");
if (package0.length() != 0) {
boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", package0);
LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_allow"));
} else {
boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", "invalid");
LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_allow"));
}
if (package1.length() != 0) {
boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", package1);
LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_disallow"));
} else {
boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", "invalid");
LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_disallow"));
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("setAppNetworkstate", e.getMessage());
}
} else {
ToastUtil.debugShow("setAppNetworkstate jsonArray is NULL");
}
}
synchronized private void setAppLockedstate(String jsonArray) {
if (jsonArray.length() > 0) {
try {
JSONObject extra = new JSONObject(jsonArray);
String packageName = extra.getString("package");
int is_lock = extra.getInt("is_lock");
ToastUtil.debugShow("收到应用锁管控消息:包名" + packageName + "is_lock_state:" + is_lock);
PackageManager pm = getPackageManager();
//后台为0可能传过来null
if (is_lock == 1) {
pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
} else {
pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("setAppLockedstate", e.getMessage());
}
} else {
ToastUtil.debugShow("setAppLockedstate jsonArray is NULL");
}
}
//静默安装应用使用okgo断网会出现问题等待修改使用aria
synchronized private void intallApk(String jsondata) {
try {
JSONObject extra = new JSONObject(jsondata);
final String packages = extra.getString("package");
ToastUtil.debugShow("收到应用安装消息:包名" + packages);
String url = extra.getString("url");
File file = new File(Environment.getExternalStoragePublicDirectory("Download") + "/Sninfo/apk");
file.mkdirs();
Aria.download(this).load(url).setFilePath(file.getAbsolutePath() + "/" + packages + ".apk").ignoreFilePathOccupy().setExtendField(packages).create();
// OkGo.<File>get(url)
// .execute(new FileCallback() {
// @Override
// public void onSuccess(Response<File> response) {
//// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video");
// ApkUtils.installApkInSilence(response.body().getAbsolutePath(), packages);
// LogUtils.e("onSuccess", "download file successful,now installing");
// }
//
// @Override
// public void onError(Response<File> response) {
// super.onError(response);
// LogUtils.e("manageCustomMessage", "File download Failure");
// }
//
// @Override
// public void downloadProgress(Progress progress) {
// super.downloadProgress(progress);
// LogUtils.e("downloadProgress", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed);
// }
// });
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("intallApk", e.getMessage());
}
}
synchronized private void unintallApk(String json) {
String sn_id = (String) SPUtils.get(context, "sn_id", "-1");
try {
JSONObject object = new JSONObject(json);
String packageName = object.getString("package");
ToastUtil.debugShow("收到应用卸载消息:包名" + packageName);
if (!packageName.equals("") && !packageName.equals(getApplicationContext().getPackageName())) {
if (!ApkUtils.isAvailable(getApplicationContext(), packageName)) {
HTTPInterface.setAppuninstallInfo(sn_id, packageName);
} else {
ApkUtils.deleteApkInSilence(packageName);
}
}
} catch (JSONException e) {
e.printStackTrace();
LogUtils.e("unintallApk", e.getMessage());
}
}
@Override
public void onDisconnected() {
LogUtils.e("onDisconnected", "网络断开");
}
@Override
public void onConnected(NetworkUtils.NetworkType networkType) {
Aria.download(this).resumeAllTask();
LogUtils.e("onConnected", "网络连接");
}
//在这里处理任务执行中的状态,如进度进度条的刷新
@Download.onTaskRunning
protected void running(DownloadTask task) {
Log.e("aria running", task.getState() + "--" + task.getPercent() + "--" + task.getExtendField());
}
@Download.onTaskComplete
void taskComplete(DownloadTask task) {
//在这里处理任务完成的状态
ApkUtils.installApkInSilence(task.getFilePath(), task.getExtendField());
}
}