init
This commit is contained in:
447
app/src/main/java/com/info/sn/MyApplication.java
Normal file
447
app/src/main/java/com/info/sn/MyApplication.java
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user