update:2020.12.26
fix:增加强制应用禁止删除 add:
This commit is contained in:
@@ -86,6 +86,8 @@
|
|||||||
<action android:name="android.intent.action.DATE_CHANGED" />
|
<action android:name="android.intent.action.DATE_CHANGED" />
|
||||||
<action android:name="android.intent.action.TIME_TICK" />
|
<action android:name="android.intent.action.TIME_TICK" />
|
||||||
<action android:name="android.intent.action.USER_PRESENT" />
|
<action android:name="android.intent.action.USER_PRESENT" />
|
||||||
|
<action android:name="android.intent.action.SCREEN_ON" />
|
||||||
|
<action android:name="android.intent.action.SCREEN_OFF" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
<receiver
|
<receiver
|
||||||
|
|||||||
@@ -6,11 +6,9 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.pm.PackageInfo;
|
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -26,11 +24,8 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.amap.api.location.AMapLocation;
|
import com.amap.api.location.AMapLocation;
|
||||||
import com.amap.api.location.AMapLocationClient;
|
import com.amap.api.location.AMapLocationClient;
|
||||||
import com.amap.api.location.AMapLocationClientOption;
|
|
||||||
import com.amap.api.location.AMapLocationListener;
|
import com.amap.api.location.AMapLocationListener;
|
||||||
import com.amap.api.location.AMapLocationQualityReport;
|
import com.amap.api.location.AMapLocationQualityReport;
|
||||||
import com.hjq.permissions.OnPermission;
|
import com.hjq.permissions.OnPermission;
|
||||||
@@ -40,7 +35,6 @@ import com.info.sn.BuildConfig;
|
|||||||
import com.info.sn.R;
|
import com.info.sn.R;
|
||||||
import com.info.sn.base.CheckPermissionsActivity;
|
import com.info.sn.base.CheckPermissionsActivity;
|
||||||
import com.info.sn.base.MyApplication;
|
import com.info.sn.base.MyApplication;
|
||||||
import com.info.sn.bean.AppInfo;
|
|
||||||
import com.info.sn.bean.BaseResponse;
|
import com.info.sn.bean.BaseResponse;
|
||||||
import com.info.sn.bean.SystemSettings;
|
import com.info.sn.bean.SystemSettings;
|
||||||
import com.info.sn.bean.UserInfo;
|
import com.info.sn.bean.UserInfo;
|
||||||
@@ -49,7 +43,6 @@ import com.info.sn.jpush.LocalBroadcastManager;
|
|||||||
import com.info.sn.jpush.TagAliasOperatorHelper;
|
import com.info.sn.jpush.TagAliasOperatorHelper;
|
||||||
import com.info.sn.network.HTTPInterface;
|
import com.info.sn.network.HTTPInterface;
|
||||||
import com.info.sn.network.NetWorkManager;
|
import com.info.sn.network.NetWorkManager;
|
||||||
import com.info.sn.network.api.ForceInstall;
|
|
||||||
import com.info.sn.network.api.SNInfo;
|
import com.info.sn.network.api.SNInfo;
|
||||||
import com.info.sn.network.api.Setting;
|
import com.info.sn.network.api.Setting;
|
||||||
import com.info.sn.service.GuardService;
|
import com.info.sn.service.GuardService;
|
||||||
@@ -57,7 +50,6 @@ import com.info.sn.service.InitJpushServer;
|
|||||||
import com.info.sn.service.MyDownloadService;
|
import com.info.sn.service.MyDownloadService;
|
||||||
import com.info.sn.service.StepService;
|
import com.info.sn.service.StepService;
|
||||||
import com.info.sn.utils.ApkUtils;
|
import com.info.sn.utils.ApkUtils;
|
||||||
import com.info.sn.utils.FileUtils;
|
|
||||||
import com.info.sn.utils.LogUtils;
|
import com.info.sn.utils.LogUtils;
|
||||||
import com.info.sn.utils.SPUtils;
|
import com.info.sn.utils.SPUtils;
|
||||||
import com.info.sn.utils.ToastUtil;
|
import com.info.sn.utils.ToastUtil;
|
||||||
@@ -76,7 +68,6 @@ import io.reactivex.annotations.NonNull;
|
|||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import me.jessyan.autosize.internal.CustomAdapt;
|
import me.jessyan.autosize.internal.CustomAdapt;
|
||||||
import retrofit2.http.HTTP;
|
|
||||||
|
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_ADD;
|
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_ADD;
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_CHECK;
|
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_CHECK;
|
||||||
@@ -171,10 +162,11 @@ public class MainActivity extends CheckPermissionsActivity implements AMapLocati
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(@NonNull Long aLong) {
|
public void onNext(@NonNull Long aLong) {
|
||||||
|
HTTPInterface.getAllappPackage(MainActivity.this);
|
||||||
HTTPInterface.setBrowser(context);
|
HTTPInterface.setBrowser(context);
|
||||||
HTTPInterface.getBrowserLabel(context);
|
HTTPInterface.getBrowserLabel(context);
|
||||||
getSystemSettings(context);
|
getSystemSettings(context);
|
||||||
getForceInstall(context);
|
HTTPInterface.getForceInstall(context);
|
||||||
HTTPInterface.getAppStart(context);
|
HTTPInterface.getAppStart(context);
|
||||||
HTTPInterface.getAppJump(context);
|
HTTPInterface.getAppJump(context);
|
||||||
}
|
}
|
||||||
@@ -291,8 +283,6 @@ public class MainActivity extends CheckPermissionsActivity implements AMapLocati
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
@@ -450,68 +440,7 @@ public class MainActivity extends CheckPermissionsActivity implements AMapLocati
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void getForceInstall(final Context context) {
|
|
||||||
ForceInstall forceInstall = NetWorkManager.getForceInstallControl();
|
|
||||||
forceInstall.getForceInstall(Utils.getSerial())
|
|
||||||
.subscribeOn(Schedulers.io())
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
|
|
||||||
@Override
|
|
||||||
public void onSubscribe(@NonNull Disposable d) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNext(@NonNull BaseResponse<List<AppInfo>> listBaseResponse) {
|
|
||||||
int code = listBaseResponse.code;
|
|
||||||
if (code == 200) {
|
|
||||||
List<AppInfo> appInfos = listBaseResponse.data;
|
|
||||||
if (null != appInfos && appInfos.size() != 0) {
|
|
||||||
getForceInstallState(context, appInfos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(@NonNull Throwable e) {
|
|
||||||
Log.e("getForceInstall", "onError: " + e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onComplete() {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void getForceInstallState(Context context, List<AppInfo> list) {
|
|
||||||
if (null != list && list.size() != 0) {
|
|
||||||
PackageManager pm = context.getPackageManager();
|
|
||||||
for (AppInfo appInfo : list) {
|
|
||||||
PackageInfo info = null;
|
|
||||||
try {
|
|
||||||
info = pm.getPackageInfo(appInfo.getApp_package(), 0);
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (null != info) {
|
|
||||||
long appVersionCode;
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
||||||
appVersionCode = info.getLongVersionCode();
|
|
||||||
} else {
|
|
||||||
appVersionCode = info.versionCode;
|
|
||||||
}
|
|
||||||
if (appVersionCode < appInfo.getApp_version_code()) {
|
|
||||||
JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo);
|
|
||||||
FileUtils.ariaDownload(context, appInfo.getApp_url(), jsonObject);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo);
|
|
||||||
FileUtils.ariaDownload(context, appInfo.getApp_url(), jsonObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -181,9 +181,8 @@ public class MyReceiver extends BroadcastReceiver {
|
|||||||
private static final String JIGUANG_SYSTEM_SETTING = "21";
|
private static final String JIGUANG_SYSTEM_SETTING = "21";
|
||||||
//系统管控
|
//系统管控
|
||||||
private static final String JIGUANG_REBOOT_DEVICES = "22";
|
private static final String JIGUANG_REBOOT_DEVICES = "22";
|
||||||
|
|
||||||
//重启
|
//重启
|
||||||
//
|
|
||||||
//send msg to MainActivity
|
//send msg to MainActivity
|
||||||
private void processCustomMessage(Context context, Bundle bundle) {
|
private void processCustomMessage(Context context, Bundle bundle) {
|
||||||
// if (MainActivity.isForeground) {
|
// if (MainActivity.isForeground) {
|
||||||
@@ -263,11 +262,7 @@ public class MyReceiver extends BroadcastReceiver {
|
|||||||
HTTPInterface.getAppJump(context);
|
HTTPInterface.getAppJump(context);
|
||||||
break;
|
break;
|
||||||
case JIGUANG_REBOOT_DEVICES:
|
case JIGUANG_REBOOT_DEVICES:
|
||||||
// Intent intent = new Intent(MainActivity.REFRESHACTION);
|
Utils.rebootDevices(context);
|
||||||
// context.sendBroadcast(intent);
|
|
||||||
if (!BuildConfig.DEBUG) {
|
|
||||||
Utils.rebootDevices(context);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case JIGUANG_APP_NET_AUTO:
|
case JIGUANG_APP_NET_AUTO:
|
||||||
HTTPInterface.getAppStart(context);
|
HTTPInterface.getAppStart(context);
|
||||||
@@ -654,7 +649,7 @@ public class MyReceiver extends BroadcastReceiver {
|
|||||||
|
|
||||||
|
|
||||||
synchronized private void unintallApk(Context context, String json) {
|
synchronized private void unintallApk(Context context, String json) {
|
||||||
int sn_id = (int) SPUtils.get(context, "sn_id", "-1");
|
int sn_id = (int) SPUtils.get(context, "sn_id", -1);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JSONObject object = new JSONObject(json);
|
JSONObject object = new JSONObject(json);
|
||||||
|
|||||||
@@ -2,50 +2,41 @@ package com.info.sn.network;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.icu.text.SimpleDateFormat;
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Message;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.RequiresApi;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONException;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.info.sn.activity.MainActivity;
|
import com.info.sn.bean.AppInfo;
|
||||||
import com.info.sn.bean.AppJump;
|
import com.info.sn.bean.AppJump;
|
||||||
import com.info.sn.bean.AppStart;
|
import com.info.sn.bean.AppStart;
|
||||||
import com.info.sn.bean.BaseResponse;
|
import com.info.sn.bean.BaseResponse;
|
||||||
import com.info.sn.bean.BrowserBean;
|
import com.info.sn.bean.BrowserBean;
|
||||||
import com.info.sn.bean.UserInfo;
|
|
||||||
import com.info.sn.network.UrlAddress;
|
|
||||||
import com.info.sn.network.api.APPJump;
|
import com.info.sn.network.api.APPJump;
|
||||||
import com.info.sn.network.api.AddAppInstall;
|
import com.info.sn.network.api.AddAppInstall;
|
||||||
import com.info.sn.network.api.Browser;
|
import com.info.sn.network.api.Browser;
|
||||||
|
import com.info.sn.network.api.ForceInstall;
|
||||||
import com.info.sn.network.api.Label;
|
import com.info.sn.network.api.Label;
|
||||||
|
import com.info.sn.network.api.QueryAllApp;
|
||||||
import com.info.sn.network.api.QuerySnAppStart;
|
import com.info.sn.network.api.QuerySnAppStart;
|
||||||
import com.info.sn.network.api.UpdateAdminSn;
|
import com.info.sn.network.api.UpdateAdminSn;
|
||||||
import com.info.sn.utils.LogUtils;
|
import com.info.sn.utils.ApkUtils;
|
||||||
|
import com.info.sn.utils.FileUtils;
|
||||||
import com.info.sn.utils.SPUtils;
|
import com.info.sn.utils.SPUtils;
|
||||||
import com.info.sn.utils.ToastUtil;
|
|
||||||
import com.info.sn.utils.Utils;
|
import com.info.sn.utils.Utils;
|
||||||
|
|
||||||
import org.w3c.dom.Text;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.reactivex.Observer;
|
import io.reactivex.Observer;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.annotations.NonNull;
|
import io.reactivex.annotations.NonNull;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.internal.schedulers.NewThreadWorker;
|
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
public class HTTPInterface {
|
public class HTTPInterface {
|
||||||
@@ -163,7 +154,7 @@ public class HTTPInterface {
|
|||||||
JsonObject label = jsonObject.getAsJsonArray("label").get(0).getAsJsonObject();
|
JsonObject label = jsonObject.getAsJsonArray("label").get(0).getAsJsonObject();
|
||||||
String home_page = label.get("home_page").getAsString();
|
String home_page = label.get("home_page").getAsString();
|
||||||
String label_page = label.get("label_page").getAsString();
|
String label_page = label.get("label_page").getAsString();
|
||||||
Log.e("getBrowserLabel", "onNext: " + home_page);
|
// Log.e("getBrowserLabel", "onNext: " + home_page);
|
||||||
//主页
|
//主页
|
||||||
Intent homepag = new Intent("qch_app_brower_homepage");
|
Intent homepag = new Intent("qch_app_brower_homepage");
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
@@ -436,15 +427,15 @@ public class HTTPInterface {
|
|||||||
jsonObject.put("address", address);
|
jsonObject.put("address", address);
|
||||||
jsonObject.put("longitude", longitude);
|
jsonObject.put("longitude", longitude);
|
||||||
jsonObject.put("latitude", latitude);
|
jsonObject.put("latitude", latitude);
|
||||||
String a = jsonObject.toString();
|
// String a = jsonObject.toString();
|
||||||
String b = Utils.getMachine(context);
|
// String b = Utils.getMachine(context);
|
||||||
String c = Utils.getHardware(context);
|
// String c = Utils.getHardware(context);
|
||||||
UpdateAdminSn updateAdminSn = NetWorkManager.getUpdateAdminSnControl();
|
UpdateAdminSn updateAdminSn = NetWorkManager.getUpdateAdminSnControl();
|
||||||
updateAdminSn.sendAdminSn(Utils.getSerial(),
|
updateAdminSn.sendAdminSn(Utils.getSerial(),
|
||||||
jsonObject.toJSONString(),
|
jsonObject.toJSONString(),
|
||||||
Utils.getMachine(context),
|
Utils.getMachine(context),
|
||||||
Utils.getHardware(context)
|
Utils.getHardware(context)
|
||||||
).subscribeOn(Schedulers.io())
|
).subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<BaseResponse>() {
|
.subscribe(new Observer<BaseResponse>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -469,6 +460,130 @@ public class HTTPInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void getAllappPackage(final Context context) {
|
||||||
|
QueryAllApp queryAllApp = NetWorkManager.getQueryAllAppControl();
|
||||||
|
queryAllApp.getAllApp(Utils.getSerial())
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@NonNull BaseResponse<List<AppInfo>> listBaseResponse) {
|
||||||
|
int code = listBaseResponse.code;
|
||||||
|
if (code == 200) {
|
||||||
|
Log.e("getAllappPackage", "onNext: " + listBaseResponse.msg);
|
||||||
|
List<AppInfo> appInfoList = listBaseResponse.data;
|
||||||
|
if (null != appInfoList && appInfoList.size() != 0) {
|
||||||
|
String s = "";
|
||||||
|
for (AppInfo appInfo : appInfoList) {
|
||||||
|
s += appInfo.getApp_package() + ",";
|
||||||
|
}
|
||||||
|
if (s.endsWith(",")) {
|
||||||
|
s = s.substring(0, s.length() - 1);
|
||||||
|
}
|
||||||
|
ApkUtils.writeAppPackageList(context, s);
|
||||||
|
} else {
|
||||||
|
ApkUtils.writeAppPackageList(context, "Invalid");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ApkUtils.writeAppPackageList(context, "Invalid");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(@NonNull Throwable e) {
|
||||||
|
Log.e("getAllappPackage", "onError: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void getForceInstall(final Context context) {
|
||||||
|
ForceInstall forceInstall = NetWorkManager.getForceInstallControl();
|
||||||
|
forceInstall.getForceInstall(Utils.getSerial())
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@NonNull BaseResponse<List<AppInfo>> listBaseResponse) {
|
||||||
|
int code = listBaseResponse.code;
|
||||||
|
if (code == 200) {
|
||||||
|
List<AppInfo> appInfos = listBaseResponse.data;
|
||||||
|
if (null != appInfos && appInfos.size() != 0) {
|
||||||
|
getForceInstallState(context, appInfos);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", "invalid");
|
||||||
|
Log.e("fht", "qch_force_app:" + qch_force_app + ":" + "invalid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(@NonNull Throwable e) {
|
||||||
|
Log.e("getForceInstall", "onError: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void getForceInstallState(Context context, List<AppInfo> list) {
|
||||||
|
if (null != list && list.size() != 0) {
|
||||||
|
String packageList = "";
|
||||||
|
PackageManager pm = context.getPackageManager();
|
||||||
|
for (AppInfo appInfo : list) {
|
||||||
|
packageList += appInfo.getApp_package() + ",";
|
||||||
|
PackageInfo info = null;
|
||||||
|
try {
|
||||||
|
info = pm.getPackageInfo(appInfo.getApp_package(), 0);
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if (null != info) {
|
||||||
|
long appVersionCode;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
appVersionCode = info.getLongVersionCode();
|
||||||
|
} else {
|
||||||
|
appVersionCode = info.versionCode;
|
||||||
|
}
|
||||||
|
if (appVersionCode < appInfo.getApp_version_code()) {
|
||||||
|
JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo);
|
||||||
|
FileUtils.ariaDownload(context, appInfo.getApp_url(), jsonObject);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo);
|
||||||
|
FileUtils.ariaDownload(context, appInfo.getApp_url(), jsonObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (packageList.endsWith(",")) {
|
||||||
|
packageList = packageList.substring(0, packageList.length() - 1);
|
||||||
|
boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", packageList);
|
||||||
|
Log.e("fht", "qch_force_app:" + qch_force_app + ":" + packageList);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", "invalid");
|
||||||
|
Log.e("fht", "qch_force_app:" + qch_force_app + ":" + "invalid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//获取设备信息接口
|
//获取设备信息接口
|
||||||
// public static synchronized void checkDevicesInfo(final Handler handler) {
|
// public static synchronized void checkDevicesInfo(final Handler handler) {
|
||||||
// OkGo.<String>get(UrlAddress.SNINFO)
|
// OkGo.<String>get(UrlAddress.SNINFO)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.info.sn.network.api.BindDevices;
|
|||||||
import com.info.sn.network.api.Browser;
|
import com.info.sn.network.api.Browser;
|
||||||
import com.info.sn.network.api.ForceInstall;
|
import com.info.sn.network.api.ForceInstall;
|
||||||
import com.info.sn.network.api.Label;
|
import com.info.sn.network.api.Label;
|
||||||
|
import com.info.sn.network.api.QueryAllApp;
|
||||||
import com.info.sn.network.api.QuerySnAppStart;
|
import com.info.sn.network.api.QuerySnAppStart;
|
||||||
import com.info.sn.network.api.SNInfo;
|
import com.info.sn.network.api.SNInfo;
|
||||||
import com.info.sn.network.api.Setting;
|
import com.info.sn.network.api.Setting;
|
||||||
@@ -59,6 +60,8 @@ public class NetWorkManager {
|
|||||||
private static QuerySnAppStart appStartControl;
|
private static QuerySnAppStart appStartControl;
|
||||||
private static APPJump appJumpControl;
|
private static APPJump appJumpControl;
|
||||||
private static UpdateAdminSn updateAdminSnControl;
|
private static UpdateAdminSn updateAdminSnControl;
|
||||||
|
private static QueryAllApp queryAllAppControl;
|
||||||
|
|
||||||
|
|
||||||
public static SNInfo getsnInfoControl() {
|
public static SNInfo getsnInfoControl() {
|
||||||
if (null == snInfoControl) {
|
if (null == snInfoControl) {
|
||||||
@@ -190,6 +193,17 @@ public class NetWorkManager {
|
|||||||
}
|
}
|
||||||
return updateAdminSnControl;
|
return updateAdminSnControl;
|
||||||
}
|
}
|
||||||
|
public static QueryAllApp getQueryAllAppControl() {
|
||||||
|
if (null == queryAllAppControl) {
|
||||||
|
Retrofit retrofit = new Retrofit.Builder()
|
||||||
|
.client(client)
|
||||||
|
.baseUrl(ROOT_URL)
|
||||||
|
.addConverterFactory(gsonConverterFactory)
|
||||||
|
.addCallAdapterFactory(rxJavaCallAdapterFactory)
|
||||||
|
.build();
|
||||||
|
queryAllAppControl = retrofit.create(QueryAllApp.class);
|
||||||
|
}
|
||||||
|
return queryAllAppControl;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ public class UrlAddress {
|
|||||||
//获取当前最顶层应用和电量
|
//获取当前最顶层应用和电量
|
||||||
public final static String SEND_DRIVE_STATE = ROOT_URL + "Online/online";
|
public final static String SEND_DRIVE_STATE = ROOT_URL + "Online/online";
|
||||||
|
|
||||||
public final static String GET_ALL_PACKAGENAME = ROOT_URL + "App/allPackageSn";
|
public final static String GET_ALL_PACKAGE = ROOT_URL + "app/queryAllApp";
|
||||||
//获取所有应用包名
|
//获取所有应用
|
||||||
public final static String BIND_DEVICES = ROOT_URL + "sn/bindSn";
|
public final static String BIND_DEVICES = ROOT_URL + "sn/bindSn";
|
||||||
//绑定设备消息
|
//绑定设备消息
|
||||||
public final static String GET_SETTINGS = ROOT_URL + "control/getSetting";
|
public final static String GET_SETTINGS = ROOT_URL + "control/getSetting";
|
||||||
|
|||||||
18
app/src/main/java/com/info/sn/network/api/QueryAllApp.java
Normal file
18
app/src/main/java/com/info/sn/network/api/QueryAllApp.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package com.info.sn.network.api;
|
||||||
|
|
||||||
|
import com.info.sn.bean.AppInfo;
|
||||||
|
import com.info.sn.bean.BaseResponse;
|
||||||
|
import com.info.sn.network.UrlAddress;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import io.reactivex.Observable;
|
||||||
|
import retrofit2.http.GET;
|
||||||
|
import retrofit2.http.Query;
|
||||||
|
|
||||||
|
public interface QueryAllApp {
|
||||||
|
@GET(UrlAddress.GET_ALL_PACKAGE)
|
||||||
|
Observable<BaseResponse<List<AppInfo>>> getAllApp(
|
||||||
|
@Query("sn") String sn
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -16,19 +16,21 @@ public class BootReceiver extends BroadcastReceiver {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
Log.e("SNBootReceiver", intent.getAction());
|
String action = intent.getAction();
|
||||||
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")
|
Log.e("SNBootReceiver", action);
|
||||||
|| intent.getAction().equals("android.intent.action.BATTERY_CHANGED")
|
if (action.equals(Intent.ACTION_BOOT_COMPLETED)
|
||||||
|| intent.getAction().equals("android.intent.action.BATTERY_LEVEL_CHANGED")
|
|| action.equals(Intent.ACTION_BATTERY_CHANGED)
|
||||||
|| intent.getAction().equals("android.intent.action.BATTERY_LOW")
|
|| action.equals(Intent.ACTION_BATTERY_LOW)
|
||||||
|| intent.getAction().equals("android.intent.action.BATTERY_OKAY")
|
|| action.equals(Intent.ACTION_BATTERY_OKAY)
|
||||||
|| intent.getAction().equals("android.intent.action.ACTION_POWER_CONNECTED")
|
|| action.equals(Intent.ACTION_POWER_CONNECTED)
|
||||||
|| intent.getAction().equals("android.intent.action.ACTION_POWER_DISCONNECTED")
|
|| action.equals(Intent.ACTION_POWER_DISCONNECTED)
|
||||||
|| intent.getAction().equals("android.intent.action.DATE_CHANGED")
|
|| action.equals(Intent.ACTION_DATE_CHANGED)
|
||||||
|| intent.getAction().equals("android.intent.action.TIME_TICK")
|
|| action.equals(Intent.ACTION_TIME_TICK)
|
||||||
|| intent.getAction().equals("android.intent.action.USER_PRESENT")
|
|| action.equals(Intent.ACTION_USER_PRESENT)
|
||||||
|| intent.getAction().equals("android.intent.action.ACTION_SCREEN_ON")
|
|| action.equals(Intent.ACTION_SCREEN_ON)
|
||||||
|| intent.getAction().equals("android.intent.action.ACTION_SCREEN_OFF")) {
|
|| action.equals(Intent.ACTION_SCREEN_OFF)
|
||||||
|
|| action.equals("android.intent.action.BATTERY_LEVEL_CHANGED")
|
||||||
|
) {
|
||||||
// Intent i = new Intent(context, InitJpushServer.class);
|
// Intent i = new Intent(context, InitJpushServer.class);
|
||||||
// context.startService(i);
|
// context.startService(i);
|
||||||
context.startService(new Intent(context, GuardService.class));
|
context.startService(new Intent(context, GuardService.class));
|
||||||
@@ -36,6 +38,5 @@ public class BootReceiver extends BroadcastReceiver {
|
|||||||
context.startService(new Intent(context, InitJpushServer.class));
|
context.startService(new Intent(context, InitJpushServer.class));
|
||||||
context.startService(new Intent(context, MyDownloadService.class));
|
context.startService(new Intent(context, MyDownloadService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,27 @@
|
|||||||
package com.info.sn.service;
|
package com.info.sn.service;
|
||||||
|
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.info.sn.KeepAliveConnection;
|
import com.info.sn.KeepAliveConnection;
|
||||||
|
import com.info.sn.activity.MainActivity;
|
||||||
|
import com.info.sn.bean.AppInfo;
|
||||||
|
import com.info.sn.bean.BaseResponse;
|
||||||
|
import com.info.sn.network.HTTPInterface;
|
||||||
|
import com.info.sn.network.NetWorkManager;
|
||||||
|
import com.info.sn.network.api.ForceInstall;
|
||||||
|
import com.info.sn.utils.Utils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import io.reactivex.Observer;
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
|
import io.reactivex.annotations.NonNull;
|
||||||
|
import io.reactivex.disposables.Disposable;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
public class InitJpushServer extends Service {
|
public class InitJpushServer extends Service {
|
||||||
public InitJpushServer() {
|
public InitJpushServer() {
|
||||||
@@ -28,6 +45,10 @@ public class InitJpushServer extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||||
// HTTPInterface.checkDevicesInfo(InitJpushServer.this);
|
// HTTPInterface.checkDevicesInfo(InitJpushServer.this);
|
||||||
|
HTTPInterface.getAllappPackage(InitJpushServer.this);
|
||||||
|
HTTPInterface.getForceInstall(InitJpushServer.this);
|
||||||
return START_STICKY;
|
return START_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import android.net.Uri;
|
|||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@ import java.io.OutputStream;
|
|||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
@@ -659,4 +661,69 @@ public class ApkUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void addShortcut(Context context, String packageList) {
|
||||||
|
if (TextUtils.isEmpty(packageList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String[] stringList = packageList.split(",");
|
||||||
|
List<String> packages = new ArrayList<>(Arrays.asList(stringList));
|
||||||
|
String installedList = "";
|
||||||
|
for (String s : packages) {
|
||||||
|
if (s.equals("com.jiaoguanyi.store") || s.equals("com.jiaoguanyi.appstore")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!ApkUtils.isAvailable(context, s)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// ApkUtils.getStartActivityName(context, s);
|
||||||
|
installedList += s + ",";
|
||||||
|
Log.e("addShortcut", s);
|
||||||
|
}
|
||||||
|
if (installedList.length() != 0) {
|
||||||
|
installedList = installedList.substring(0, installedList.length() - 1);
|
||||||
|
} else {
|
||||||
|
Log.e("addShortcut", installedList);
|
||||||
|
}
|
||||||
|
boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_launcher_icon_app", installedList);
|
||||||
|
// String old = Settings.System.getString(context.getContentResolver(), "qch_launcher_icon_app");
|
||||||
|
// Log.e("addShortcut", old);
|
||||||
|
Log.e("addShortcut", "putstring:" + qch_force_app);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void writeAppPackageList(Context context, String result) {
|
||||||
|
ApkUtils.addShortcut(context, result);//开机之后添加图标到桌面
|
||||||
|
String appstore = "com.jiaoguanyi.appstore";
|
||||||
|
String store = "com.jiaoguanyi.store";
|
||||||
|
String infosn = "com.info.sn";
|
||||||
|
String appstoreuiui = "com.appstore.uiui";
|
||||||
|
String jgy1 = "com.uiuios.jgy1";
|
||||||
|
String jgy2 = "com.uiuios.jgy2";
|
||||||
|
if (!TextUtils.isEmpty(result)) {
|
||||||
|
if (!result.contains(appstore)) {
|
||||||
|
result = result + "," + appstore;
|
||||||
|
}
|
||||||
|
if (!result.contains(store)) {
|
||||||
|
result = result + "," + store;
|
||||||
|
}
|
||||||
|
if (!result.contains(jgy1)) {
|
||||||
|
result = result + "," + jgy1;
|
||||||
|
}
|
||||||
|
if (!result.contains(jgy2)) {
|
||||||
|
result = result + "," + jgy2;
|
||||||
|
}
|
||||||
|
if (!result.contains(infosn)) {
|
||||||
|
result = result + "," + infosn;
|
||||||
|
}
|
||||||
|
if (!result.contains(appstoreuiui)) {
|
||||||
|
result = result + "," + appstoreuiui;
|
||||||
|
}
|
||||||
|
boolean qch_app_forbid = Settings.System.putString(context.getContentResolver(), "qch_app_forbid", result);
|
||||||
|
Log.e("fht", "qch_app_forbid :" + result + ":" + qch_app_forbid);
|
||||||
|
} else {
|
||||||
|
Log.e("fht", "writeAppPackageList is null:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1371,6 +1371,10 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void rebootDevices(Context context) {
|
public static void rebootDevices(Context context) {
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
ToastUtil.show("收到重启设备推送消息");
|
||||||
|
return;
|
||||||
|
}
|
||||||
Intent iReboot = new Intent(Intent.ACTION_REBOOT);
|
Intent iReboot = new Intent(Intent.ACTION_REBOOT);
|
||||||
iReboot.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
iReboot.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
context.startActivity(iReboot);
|
context.startActivity(iReboot);
|
||||||
|
|||||||
Reference in New Issue
Block a user