version:1.8.5
date:2021-12-03 15:42:13 fix: add:准备移植到老人平板项目
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
static def appName() {
|
static def appName() {
|
||||||
return "SnInfo"
|
return "UIUISN"
|
||||||
}
|
}
|
||||||
|
|
||||||
static def releaseTime() {
|
static def releaseTime() {
|
||||||
@@ -9,6 +9,20 @@ static def releaseTime() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
gradle.projectsEvaluated {
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
Set<File> fileSet = options.bootstrapClasspath.getFiles()
|
||||||
|
List<File> newFileList = new ArrayList<>();
|
||||||
|
//JAVA语法,可连续调用,输入参数建议为相对路径
|
||||||
|
newFileList.add(new File("libs/framework.jar"))
|
||||||
|
//最后将原始参数添加
|
||||||
|
newFileList.addAll(fileSet)
|
||||||
|
options.bootstrapClasspath = files(
|
||||||
|
newFileList.toArray()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
compileSdkVersion 29
|
compileSdkVersion 29
|
||||||
buildToolsVersion "29.0.3"
|
buildToolsVersion "29.0.3"
|
||||||
|
|
||||||
@@ -46,8 +60,8 @@ android {
|
|||||||
productFlavors {
|
productFlavors {
|
||||||
beta {
|
beta {
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
versionCode 82
|
versionCode 85
|
||||||
versionName "1.8.2"
|
versionName "1.8.5"
|
||||||
manifestPlaceholders = [
|
manifestPlaceholders = [
|
||||||
JPUSH_PKGNAME: "com.info.sn",
|
JPUSH_PKGNAME: "com.info.sn",
|
||||||
JPUSH_APPKEY : "edf9cec22731b8b2fed56ee6", //JPush 上注册的包名对应的 Appkey.
|
JPUSH_APPKEY : "edf9cec22731b8b2fed56ee6", //JPush 上注册的包名对应的 Appkey.
|
||||||
@@ -179,7 +193,7 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
// implementation fileTree(dir: 'libs', include: ['*.jar'])
|
// implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
compileOnly files('src/main/libs/classes.jar')
|
compileOnly files('libs/framework.jar')
|
||||||
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.3.1'
|
implementation 'androidx.appcompat:appcompat:1.3.1'
|
||||||
//implementation 'com.android.support:multidex:1.0.3'
|
//implementation 'com.android.support:multidex:1.0.3'
|
||||||
|
|||||||
@@ -221,6 +221,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initData() {
|
public void initData() {
|
||||||
|
HTTPInterface.setBrowserWhiteList(this);
|
||||||
if (DeviceManager.isDebugMode()) {
|
if (DeviceManager.isDebugMode()) {
|
||||||
Log.e(TAG, "getAllSPUtils: " + JSONObject.toJSONString(SPUtils.getAll(this)));
|
Log.e(TAG, "getAllSPUtils: " + JSONObject.toJSONString(SPUtils.getAll(this)));
|
||||||
// TimeUtils.setSystemTime(1627702095000L);
|
// TimeUtils.setSystemTime(1627702095000L);
|
||||||
@@ -894,13 +895,17 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setAppStart() {
|
public void setAppStart() {
|
||||||
Log.e(TAG, "SettingFinished: " + (System.currentTimeMillis() - timeMillis) + " ms");
|
|
||||||
mPresenter.getTimeControl();
|
mPresenter.getTimeControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTimeControl() {
|
public void setTimeControl() {
|
||||||
|
mPresenter.getScreenLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setScreenLock() {
|
||||||
|
Log.e(TAG, "SettingFinished: " + (System.currentTimeMillis() - timeMillis) + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ public class MainContact {
|
|||||||
void setBrowserWhiteList();
|
void setBrowserWhiteList();
|
||||||
void setAppStart();
|
void setAppStart();
|
||||||
void setTimeControl();
|
void setTimeControl();
|
||||||
|
void setScreenLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Presenter extends BasePresenter<MainView> {
|
interface Presenter extends BasePresenter<MainView> {
|
||||||
@@ -82,5 +83,7 @@ public class MainContact {
|
|||||||
void getAppStart();
|
void getAppStart();
|
||||||
//获取时间管控、
|
//获取时间管控、
|
||||||
void getTimeControl();
|
void getTimeControl();
|
||||||
|
//获取锁屏管控
|
||||||
|
void getScreenLock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,26 +26,25 @@ import com.info.sn.bean.gankao.PowerUser;
|
|||||||
import com.info.sn.bean.zuoye.AppInfo;
|
import com.info.sn.bean.zuoye.AppInfo;
|
||||||
import com.info.sn.bean.zuoye.AppStart;
|
import com.info.sn.bean.zuoye.AppStart;
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
import com.info.sn.bean.zuoye.BrowserBean;
|
import com.info.sn.bean.zuoye.Label;
|
||||||
import com.info.sn.bean.zuoye.Response;
|
import com.info.sn.bean.zuoye.browser.BrowserApiData;
|
||||||
import com.info.sn.bean.zuoye.SystemSettings;
|
import com.info.sn.bean.zuoye.browser.BrowserBean;
|
||||||
import com.info.sn.bean.zuoye.UserAvatarInfo;
|
import com.info.sn.bean.zuoye.UserAvatarInfo;
|
||||||
import com.info.sn.bean.zuoye.UserInfo;
|
import com.info.sn.bean.zuoye.UserInfo;
|
||||||
import com.info.sn.config.Configs;
|
import com.info.sn.config.Configs;
|
||||||
import com.info.sn.config.Scheme;
|
import com.info.sn.config.Scheme;
|
||||||
import com.info.sn.jpush.TagAliasOperatorHelper;
|
|
||||||
import com.info.sn.manager.AmapManager;
|
import com.info.sn.manager.AmapManager;
|
||||||
import com.info.sn.manager.ControlManager;
|
import com.info.sn.manager.ControlManager;
|
||||||
import com.info.sn.manager.NetInterfaceManager;
|
import com.info.sn.manager.NetInterfaceManager;
|
||||||
import com.info.sn.network.HTTPInterface;
|
import com.info.sn.network.HTTPInterface;
|
||||||
import com.info.sn.service.MainService;
|
import com.info.sn.network.api.BrowserLabel;
|
||||||
import com.info.sn.service.ManagerService;
|
import com.info.sn.service.ManagerService;
|
||||||
import com.info.sn.service.RemoteService;
|
|
||||||
import com.info.sn.utils.ApkUtils;
|
import com.info.sn.utils.ApkUtils;
|
||||||
import com.info.sn.utils.CXAESUtil;
|
import com.info.sn.utils.CXAESUtil;
|
||||||
import com.info.sn.utils.JGYUtils;
|
import com.info.sn.utils.JGYUtils;
|
||||||
import com.info.sn.utils.LaunchTools;
|
import com.info.sn.utils.LaunchTools;
|
||||||
import com.info.sn.utils.SPUtils;
|
import com.info.sn.utils.SPUtils;
|
||||||
|
import com.info.sn.utils.ServiceAliveUtils;
|
||||||
import com.info.sn.utils.TimeUtils;
|
import com.info.sn.utils.TimeUtils;
|
||||||
import com.info.sn.utils.ToastUtil;
|
import com.info.sn.utils.ToastUtil;
|
||||||
import com.info.sn.utils.URLUtils;
|
import com.info.sn.utils.URLUtils;
|
||||||
@@ -60,16 +59,13 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import io.reactivex.Observer;
|
import io.reactivex.Observer;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.sequence;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jgy02
|
* @author jgy02
|
||||||
*/
|
*/
|
||||||
@@ -820,35 +816,27 @@ public class MainPresenter implements MainContact.Presenter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getBrowserLabel() {
|
public void getBrowserLabel() {
|
||||||
NetInterfaceManager.getInstance()
|
NetInterfaceManager.getInstance().getLabelControl()
|
||||||
.getLabelControl()
|
|
||||||
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
||||||
.subscribe(new Observer<BaseResponse>() {
|
.subscribe(new Observer<BaseResponse<Label>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(Disposable d) {
|
||||||
Log.e(TAG + "getBrowserLabel", "onSubscribe: ");
|
Log.e(TAG + "getBrowserLabel", "onSubscribe: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(BaseResponse baseResponse) {
|
public void onNext(BaseResponse<Label> labelBaseResponse) {
|
||||||
Log.e(TAG + "getBrowserLabel", "onNext: " + baseResponse);
|
Log.e(TAG + "getBrowserLabel", "onNext: " + labelBaseResponse);
|
||||||
int code = baseResponse.code;
|
if (labelBaseResponse.code == 200) {
|
||||||
if (code == 200) {
|
String home_page = labelBaseResponse.data.getHome_page();
|
||||||
Gson gson = new Gson();
|
|
||||||
String data = gson.toJson(baseResponse.data);
|
|
||||||
JsonObject jsonObject = gson.fromJson(data, JsonObject.class);
|
|
||||||
// JsonElement label = jsonObject.get(0).getAsJsonObject();
|
|
||||||
String home_page = jsonObject.get("home_page").getAsString();
|
|
||||||
JGYUtils.putString(mContext.getContentResolver(), "homepagURL", home_page);
|
JGYUtils.putString(mContext.getContentResolver(), "homepagURL", home_page);
|
||||||
String label_page = jsonObject.get("label_page").getAsString();
|
|
||||||
// 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) {
|
||||||
homepag.setPackage("com.android.settings")
|
homepag.setPackage("com.android.settings")
|
||||||
.setPackage("com.android.browser");
|
.setPackage("com.android.browser");
|
||||||
}
|
}
|
||||||
if (home_page != null && !home_page.equals("")) {
|
if (!TextUtils.isEmpty(home_page)) {
|
||||||
homepag.putExtra("homepage", home_page);
|
homepag.putExtra("homepage", home_page);
|
||||||
} else {
|
} else {
|
||||||
homepag.putExtra("homepage", "Invalid");
|
homepag.putExtra("homepage", "Invalid");
|
||||||
@@ -856,12 +844,13 @@ public class MainPresenter implements MainContact.Presenter {
|
|||||||
mContext.sendBroadcast(homepag);
|
mContext.sendBroadcast(homepag);
|
||||||
|
|
||||||
//书签
|
//书签
|
||||||
|
String label_page = labelBaseResponse.data.getLabel_page();
|
||||||
Intent websiteBookMark = new Intent("qch_app_brower_website");
|
Intent websiteBookMark = new Intent("qch_app_brower_website");
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
websiteBookMark.setPackage("com.android.settings")
|
websiteBookMark.setPackage("com.android.settings")
|
||||||
.setPackage("com.android.browser");
|
.setPackage("com.android.browser");
|
||||||
}
|
}
|
||||||
if (label_page != null && !label_page.equals("")) {
|
if (!TextUtils.isEmpty(label_page)) {
|
||||||
websiteBookMark.putExtra("websiteBookMark", label_page);
|
websiteBookMark.putExtra("websiteBookMark", label_page);
|
||||||
} else {
|
} else {
|
||||||
websiteBookMark.putExtra("websiteBookMark", "Invalid");
|
websiteBookMark.putExtra("websiteBookMark", "Invalid");
|
||||||
@@ -904,42 +893,33 @@ public class MainPresenter implements MainContact.Presenter {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void getBrowserWhiteList() {
|
public void getBrowserWhiteList() {
|
||||||
NetInterfaceManager.getInstance()
|
NetInterfaceManager.getInstance().getBrowserControl()
|
||||||
.getBrowserControl()
|
|
||||||
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
||||||
.subscribe(new Observer<BaseResponse>() {
|
.subscribe(new Observer<BaseResponse<BrowserApiData>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(Disposable d) {
|
||||||
Log.e(TAG + "getBrowserWhiteList", "onSubscribe: ");
|
Log.e(TAG + "getBrowserWhiteList", "onSubscribe: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(BaseResponse baseResponse) {
|
public void onNext(BaseResponse<BrowserApiData> response) {
|
||||||
Log.e(TAG + "getBrowserWhiteList", "onNext: ");
|
Log.e(TAG + "getBrowserWhiteList", "onNext: " + response);
|
||||||
int code = baseResponse.code;
|
if (response.code == 200) {
|
||||||
if (code == 200) {
|
|
||||||
JSONObject jsonObject = (JSONObject) JSON.toJSON(baseResponse.data);
|
|
||||||
//白名单
|
//白名单
|
||||||
List<BrowserBean> white = JSON.parseArray(jsonObject.getString("browser"), BrowserBean.class);
|
List<BrowserBean> white = response.data.getWhiteList();
|
||||||
if (null != white && white.size() != 0) {
|
if (null != white && white.size() != 0) {
|
||||||
StringBuilder s = new StringBuilder();
|
boolean whiteList = JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray",
|
||||||
for (BrowserBean bean : white) {
|
white.stream().map(BrowserBean::getAddress).collect(Collectors.joining(",")));
|
||||||
s.append(bean.getAddress()).append(",");
|
Log.e("getBrowserWhiteList", "setBrowserList_white:" + white + ":" + whiteList);
|
||||||
}
|
|
||||||
boolean whiteList = JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray", s.toString());
|
|
||||||
Log.e(TAG + "getBrowserWhiteList", "setBrowserList_white: ");
|
|
||||||
} else {
|
} else {
|
||||||
JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray", " ");
|
JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray", " ");
|
||||||
}
|
}
|
||||||
//黑名单
|
//黑名单
|
||||||
List<BrowserBean> black = JSON.parseArray(jsonObject.getString("browser_black"), BrowserBean.class);
|
List<BrowserBean> black = response.data.getBlackList();
|
||||||
if (null != black && black.size() != 0) {
|
if (null != black && black.size() != 0) {
|
||||||
StringBuilder s = new StringBuilder();
|
boolean blackList = JGYUtils.putString(mContext.getContentResolver(), "qch_webblack_url",
|
||||||
for (BrowserBean bean : black) {
|
black.stream().map(BrowserBean::getAddress).collect(Collectors.joining(",")));
|
||||||
s.append(bean.getAddress()).append(",");
|
Log.e("getBrowserWhiteList", "setBrowserList_black:" + black + ":" + blackList);
|
||||||
}
|
|
||||||
boolean blackList = JGYUtils.putString(mContext.getContentResolver(), "qch_webblack_url", s.toString());
|
|
||||||
Log.e(TAG + "getBrowserWhiteList", "setBrowserList_black:$blackList:$black");
|
|
||||||
} else {
|
} else {
|
||||||
JGYUtils.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
|
JGYUtils.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
|
||||||
}
|
}
|
||||||
@@ -1060,4 +1040,51 @@ public class MainPresenter implements MainContact.Presenter {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getScreenLock() {
|
||||||
|
NetInterfaceManager.getInstance()
|
||||||
|
.getScreenLockControl()
|
||||||
|
.getScreenshot(Utils.getSerial())
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<BaseResponse>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
Log.e("getScreenLock", "onSubscribe: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(BaseResponse baseResponse) {
|
||||||
|
Log.e("getScreenLock", "onNext: " + baseResponse);
|
||||||
|
int code = baseResponse.code;
|
||||||
|
if (code == 200) {
|
||||||
|
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(baseResponse.data));
|
||||||
|
int is_screen_lock = jsonObject.getIntValue("is_screen_lock");
|
||||||
|
if (!ServiceAliveUtils.isServiceAlice(mContext, ManagerService.class.getName())) {
|
||||||
|
mContext.startService(new Intent(mContext, ManagerService.class));
|
||||||
|
}
|
||||||
|
Intent intent = new Intent();
|
||||||
|
// intent.putExtra("name", name);
|
||||||
|
if (1 == is_screen_lock) {
|
||||||
|
intent.setAction(ManagerService.ACTION_LOCK);
|
||||||
|
} else if (0 == is_screen_lock) {
|
||||||
|
intent.setAction(ManagerService.ACTION_UNLOCK);
|
||||||
|
}
|
||||||
|
mContext.sendBroadcast(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
Log.e("getScreenLock", "onError: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
Log.e("getScreenLock", "onComplete: ");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.info.sn.bean.zuoye;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class BrowserLabel implements Serializable {
|
public class Label implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 8836213741844057940L;
|
private static final long serialVersionUID = 8836213741844057940L;
|
||||||
private String home_page;
|
private String home_page;
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.info.sn.bean.zuoye.browser;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BrowserApiData implements Serializable {
|
||||||
|
private static final long serialVersionUID = -4027747617202520823L;
|
||||||
|
|
||||||
|
@SerializedName("browser")
|
||||||
|
List<BrowserBean> whiteList;
|
||||||
|
@SerializedName("browser_black")
|
||||||
|
List<BrowserBean> blackList;
|
||||||
|
|
||||||
|
public List<BrowserBean> getWhiteList() {
|
||||||
|
return whiteList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWhiteList(List<BrowserBean> whiteList) {
|
||||||
|
this.whiteList = whiteList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BrowserBean> getBlackList() {
|
||||||
|
return blackList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBlackList(List<BrowserBean> blackList) {
|
||||||
|
this.blackList = blackList;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
package com.info.sn.bean.zuoye;
|
package com.info.sn.bean.zuoye.browser;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
@@ -22,4 +27,10 @@ public class BrowserBean implements Serializable {
|
|||||||
public void setType(int type) {
|
public void setType(int type) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,10 @@ import android.util.Log;
|
|||||||
import com.info.sn.bean.zuoye.AppInfo;
|
import com.info.sn.bean.zuoye.AppInfo;
|
||||||
import com.info.sn.bean.zuoye.AppStart;
|
import com.info.sn.bean.zuoye.AppStart;
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
|
import com.info.sn.bean.zuoye.Label;
|
||||||
import com.info.sn.bean.zuoye.UserAvatarInfo;
|
import com.info.sn.bean.zuoye.UserAvatarInfo;
|
||||||
import com.info.sn.bean.zuoye.UserInfo;
|
import com.info.sn.bean.zuoye.UserInfo;
|
||||||
|
import com.info.sn.bean.zuoye.browser.BrowserApiData;
|
||||||
import com.info.sn.network.UrlAddress;
|
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;
|
||||||
@@ -125,6 +127,38 @@ public class NetInterfaceManager {
|
|||||||
return originalResponse.newBuilder().build();
|
return originalResponse.newBuilder().build();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Interceptor interceptor = new Interceptor() {
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Response intercept(@NotNull Chain chain) throws IOException {
|
||||||
|
Request request = chain.request();
|
||||||
|
//相同的请求
|
||||||
|
String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString());
|
||||||
|
long time = System.currentTimeMillis();//请求时间
|
||||||
|
try {
|
||||||
|
if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) {
|
||||||
|
Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url());
|
||||||
|
chain.call().cancel();
|
||||||
|
return new Response.Builder()
|
||||||
|
.protocol(Protocol.get(CUSTOM_REPEAT_REQ_PROTOCOL))
|
||||||
|
.request(request) //multi thread
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
requestIdsMap.put(requestKey, time);
|
||||||
|
Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url());
|
||||||
|
// Request.Builder builder = request.newBuilder();
|
||||||
|
// builder.addHeader("header", jsonObject.toString());
|
||||||
|
return chain.proceed(request);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
} finally {
|
||||||
|
if (requestIdsMap.containsKey(requestKey) && requestIdsMap.containsValue(time)) {//请求任务完成删除map中的数据
|
||||||
|
requestIdsMap.remove(requestKey);
|
||||||
|
Log.e("REPEAT-REQUEST", "移除请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
|
//如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
|
||||||
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
||||||
@@ -132,8 +166,9 @@ public class NetInterfaceManager {
|
|||||||
builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间
|
builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间
|
||||||
builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
|
builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
|
||||||
builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
|
builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
|
||||||
builder.addInterceptor(myHttpInterceptor);
|
builder.addInterceptor(interceptor);
|
||||||
builder.addNetworkInterceptor(mRequestInterceptor);
|
// builder.addInterceptor(myHttpInterceptor);
|
||||||
|
// builder.addNetworkInterceptor(mRequestInterceptor);
|
||||||
|
|
||||||
// 设置缓存文件路径
|
// 设置缓存文件路径
|
||||||
String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache";
|
String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache";
|
||||||
@@ -197,14 +232,14 @@ public class NetInterfaceManager {
|
|||||||
.observeOn(AndroidSchedulers.mainThread());
|
.observeOn(AndroidSchedulers.mainThread());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Observable<BaseResponse> getBrowserControl() {
|
public Observable<BaseResponse<BrowserApiData>> getBrowserControl() {
|
||||||
return mRetrofit.create(Browser.class)
|
return mRetrofit.create(Browser.class)
|
||||||
.getBrowser(Utils.getSerial())
|
.getBrowser(Utils.getSerial())
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread());
|
.observeOn(AndroidSchedulers.mainThread());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Observable<BaseResponse> getLabelControl() {
|
public Observable<BaseResponse<Label>> getLabelControl() {
|
||||||
return mRetrofit.create(BrowserLabel.class)
|
return mRetrofit.create(BrowserLabel.class)
|
||||||
.getLabel(Utils.getSerial())
|
.getLabel(Utils.getSerial())
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ import com.info.sn.bean.zuoye.AppInfo;
|
|||||||
import com.info.sn.bean.zuoye.AppStart;
|
import com.info.sn.bean.zuoye.AppStart;
|
||||||
import com.info.sn.bean.zuoye.AppUploadInfo;
|
import com.info.sn.bean.zuoye.AppUploadInfo;
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
import com.info.sn.bean.zuoye.BrowserBean;
|
import com.info.sn.bean.zuoye.Label;
|
||||||
|
import com.info.sn.bean.zuoye.browser.BrowserApiData;
|
||||||
|
import com.info.sn.bean.zuoye.browser.BrowserBean;
|
||||||
import com.info.sn.jpush.TagAliasOperatorHelper;
|
import com.info.sn.jpush.TagAliasOperatorHelper;
|
||||||
import com.info.sn.manager.ControlManager;
|
import com.info.sn.manager.ControlManager;
|
||||||
import com.info.sn.manager.NetInterfaceManager;
|
import com.info.sn.manager.NetInterfaceManager;
|
||||||
@@ -44,14 +46,19 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.ObservableOnSubscribe;
|
import io.reactivex.ObservableOnSubscribe;
|
||||||
|
import io.reactivex.ObservableSource;
|
||||||
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.functions.BiFunction;
|
||||||
|
import io.reactivex.functions.Consumer;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
||||||
@@ -97,127 +104,161 @@ public class HTTPInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setBrowserWhiteList(Context context) {
|
||||||
/**
|
Observable.zip(NetInterfaceManager.getInstance().getLabelControl(),
|
||||||
* @param context 获取浏览器黑白名单
|
NetInterfaceManager.getInstance().getBrowserControl(),
|
||||||
*/
|
new BiFunction<BaseResponse<Label>, BaseResponse<BrowserApiData>, HashSet<String>>() {
|
||||||
public static void getBrowserWhiteList(final Context context) {
|
|
||||||
NetInterfaceManager.getInstance().getBrowserControl()
|
|
||||||
.subscribe(new Observer<BaseResponse>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(@NonNull Disposable d) {
|
public HashSet<String> apply(BaseResponse<Label> baseResponse, BaseResponse<BrowserApiData> baseResponse2) throws Exception {
|
||||||
|
HashSet<String> hashSet = new HashSet<>();
|
||||||
}
|
setLabelResponse(context, baseResponse);
|
||||||
|
if (baseResponse.code == 200) {
|
||||||
@Override
|
if (!TextUtils.isEmpty(baseResponse.data.getHome_page())) {
|
||||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
hashSet.add(baseResponse.data.getHome_page());
|
||||||
int code = baseResponse.code;
|
|
||||||
if (code == 200) {
|
|
||||||
JSONObject jsonObject = (JSONObject) JSON.toJSON(baseResponse.data);
|
|
||||||
//白名单
|
|
||||||
List<BrowserBean> white = JSON.parseArray(jsonObject.getString("browser"), BrowserBean.class);
|
|
||||||
if (null != white && white.size() != 0) {
|
|
||||||
StringBuilder s = new StringBuilder();
|
|
||||||
for (BrowserBean bean : white) {
|
|
||||||
s.append(bean.getAddress()).append(",");
|
|
||||||
}
|
|
||||||
boolean whiteList = JGYUtils.putString(context.getContentResolver(), "DeselectBrowserArray", s.toString());
|
|
||||||
Log.e("setBrowser", "setBrowserList_white:" + whiteList + ":" + white);
|
|
||||||
} else {
|
|
||||||
JGYUtils.putString(context.getContentResolver(), "DeselectBrowserArray", " ");
|
|
||||||
}
|
}
|
||||||
//黑名单
|
|
||||||
List<BrowserBean> black = JSON.parseArray(jsonObject.getString("browser_black"), BrowserBean.class);
|
|
||||||
if (null != black && black.size() != 0) {
|
|
||||||
StringBuilder s = new StringBuilder();
|
|
||||||
for (BrowserBean bean : black) {
|
|
||||||
s.append(bean.getAddress()).append(",");
|
|
||||||
}
|
|
||||||
boolean blackList = JGYUtils.putString(context.getContentResolver(), "qch_webblack_url", s.toString());
|
|
||||||
Log.e("setBrowser", "setBrowserList_black:" + blackList + ":" + black);
|
|
||||||
} else {
|
|
||||||
JGYUtils.putString(context.getContentResolver(), "qch_webblack_url", " ");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
JGYUtils.putString(context.getContentResolver(), "DeselectBrowserArray", " ");
|
|
||||||
JGYUtils.putString(context.getContentResolver(), "qch_webblack_url", " ");
|
|
||||||
}
|
}
|
||||||
|
setBrowserResponse(context, baseResponse2);
|
||||||
|
if (baseResponse2.code == 200) {
|
||||||
|
List<BrowserBean> beanList = baseResponse2.data.getWhiteList();
|
||||||
|
if (beanList != null && beanList.size() != 0) {
|
||||||
|
for (BrowserBean browserBean : beanList) {
|
||||||
|
hashSet.add(browserBean.getAddress());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return hashSet;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<HashSet<String>>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
Log.e("setBrowserWhiteList", "onSubscribe: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(@NonNull Throwable e) {
|
public void onNext(HashSet<String> strings) {
|
||||||
Log.e("setBrowser", "onError: " + e.getMessage());
|
Log.e("setBrowserWhiteList", "onNext: " + strings);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
Log.e("setBrowserWhiteList", "onError: " + e.getMessage());
|
||||||
|
onComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
Log.e("setBrowser", "onComplete: ");
|
Log.e("setBrowserWhiteList", "onComplete: ");
|
||||||
|
new URLUtils(context).setBrowserList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// NetInterfaceManager.getInstance().getLabelControl().getLabel(Utils.getSerial())
|
||||||
|
// .flatMap(new Function<BaseResponse, ObservableSource<BaseResponse<BrowserApiData>>>() {
|
||||||
|
// @Override
|
||||||
|
// public ObservableSource<BaseResponse<BrowserApiData>> apply(BaseResponse baseResponse) throws Exception {
|
||||||
|
// return NetInterfaceManager.getInstance().getBrowserControl().getBrowser(Utils.getSerial());
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// .map(new Function<BaseResponse, String>() {
|
||||||
|
// @Override
|
||||||
|
// public String apply(BaseResponse baseResponse) throws Exception {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// .subscribeOn(Schedulers.io())
|
||||||
|
// .observeOn(AndroidSchedulers.mainThread())
|
||||||
|
// .subscribe(new Observer<String>() {
|
||||||
|
// @Override
|
||||||
|
// public void onSubscribe(Disposable d) {
|
||||||
|
// Log.e("setBrowserWhiteList", "onSubscribe: ");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void onNext(String s) {
|
||||||
|
// Log.e("setBrowserWhiteList", "onNext: ");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void onError(Throwable e) {
|
||||||
|
// Log.e("setBrowserWhiteList", "onError: ");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void onComplete() {
|
||||||
|
// Log.e("setBrowserWhiteList", "onComplete: ");
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param context 获取浏览器黑白名单
|
||||||
|
*/
|
||||||
|
public static void getBrowserWhiteList(Context context) {
|
||||||
|
NetInterfaceManager.getInstance().getBrowserControl()
|
||||||
|
.subscribe(new Observer<BaseResponse<BrowserApiData>>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
Log.e("getBrowserWhiteList", "onSubscribe: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@NonNull BaseResponse<BrowserApiData> response) {
|
||||||
|
setBrowserResponse(context, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(@NonNull Throwable e) {
|
||||||
|
Log.e("getBrowserWhiteList", "onError: " + e.getMessage());
|
||||||
|
onComplete();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
Log.e("getBrowserWhiteList", "onComplete: ");
|
||||||
new URLUtils(context).setBrowserList();
|
new URLUtils(context).setBrowserList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void setBrowserResponse(Context context, BaseResponse<BrowserApiData> response) {
|
||||||
|
if (response.code == 200) {
|
||||||
|
//白名单
|
||||||
|
List<BrowserBean> white = response.data.getWhiteList();
|
||||||
|
if (null != white && white.size() != 0) {
|
||||||
|
boolean whiteList = JGYUtils.putString(context.getContentResolver(), "DeselectBrowserArray",
|
||||||
|
white.stream().map(BrowserBean::getAddress).collect(Collectors.joining(",")));
|
||||||
|
Log.e("getBrowserWhiteList", "setBrowserList_white:" + white + ":" + whiteList);
|
||||||
|
} else {
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "DeselectBrowserArray", " ");
|
||||||
|
}
|
||||||
|
//黑名单
|
||||||
|
List<BrowserBean> black = response.data.getBlackList();
|
||||||
|
if (null != black && black.size() != 0) {
|
||||||
|
boolean blackList = JGYUtils.putString(context.getContentResolver(), "qch_webblack_url",
|
||||||
|
black.stream().map(BrowserBean::getAddress).collect(Collectors.joining(",")));
|
||||||
|
Log.e("getBrowserWhiteList", "setBrowserList_black:" + black + ":" + blackList);
|
||||||
|
} else {
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "qch_webblack_url", " ");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "DeselectBrowserArray", " ");
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "qch_webblack_url", " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void getBrowserLabel(final Context context) {
|
public static void getBrowserLabel(final Context context) {
|
||||||
NetInterfaceManager.getInstance().getLabelControl()
|
NetInterfaceManager.getInstance().getLabelControl()
|
||||||
.subscribe(new Observer<BaseResponse>() {
|
.subscribe(new Observer<BaseResponse<Label>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(@NonNull Disposable d) {
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
Log.e("getBrowserLabel", "onSubscribe: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(@NonNull BaseResponse listBaseResponse) {
|
public void onNext(@NonNull BaseResponse<Label> response) {
|
||||||
int code = listBaseResponse.code;
|
setLabelResponse(context, response);
|
||||||
if (code == 200) {
|
|
||||||
Gson gson = new Gson();
|
|
||||||
String data = gson.toJson(listBaseResponse.data);
|
|
||||||
JsonObject jsonObject = gson.fromJson(data, JsonObject.class);
|
|
||||||
// JsonElement label = jsonObject.get(0).getAsJsonObject();
|
|
||||||
String home_page = jsonObject.get("home_page").getAsString();
|
|
||||||
JGYUtils.putString(context.getContentResolver(), "homepagURL", home_page);
|
|
||||||
String label_page = jsonObject.get("label_page").getAsString();
|
|
||||||
// Log.e("getBrowserLabel", "onNext: " + home_page);
|
|
||||||
//主页
|
|
||||||
Intent homepag = new Intent("qch_app_brower_homepage");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
homepag.setPackage("com.android.settings")
|
|
||||||
.setPackage("com.android.browser");
|
|
||||||
}
|
|
||||||
if (home_page != null && !"".equals(home_page)) {
|
|
||||||
homepag.putExtra("homepage", home_page);
|
|
||||||
} else {
|
|
||||||
homepag.putExtra("homepage", "Invalid");
|
|
||||||
}
|
|
||||||
context.sendBroadcast(homepag);
|
|
||||||
|
|
||||||
//书签
|
|
||||||
Intent websiteBookMark = new Intent("qch_app_brower_website");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
websiteBookMark.setPackage("com.android.settings")
|
|
||||||
.setPackage("com.android.browser");
|
|
||||||
}
|
|
||||||
if (label_page != null && !"".equals(label_page)) {
|
|
||||||
websiteBookMark.putExtra("websiteBookMark", label_page);
|
|
||||||
} else {
|
|
||||||
websiteBookMark.putExtra("websiteBookMark", "Invalid");
|
|
||||||
}
|
|
||||||
context.sendBroadcast(websiteBookMark);
|
|
||||||
} else {
|
|
||||||
Intent intent1 = new Intent("qch_app_brower_homepage");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
intent1.setPackage("com.android.settings")
|
|
||||||
.setPackage("com.android.browser");
|
|
||||||
}
|
|
||||||
intent1.putExtra("homepage", "Invalid");
|
|
||||||
context.sendBroadcast(intent1);
|
|
||||||
Intent intent2 = new Intent("qch_app_brower_website");
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
intent2.setPackage("com.android.settings")
|
|
||||||
.setPackage("com.android.browser");
|
|
||||||
}
|
|
||||||
intent2.putExtra("websiteBookMark", "Invalid");
|
|
||||||
context.sendBroadcast(intent2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -228,11 +269,61 @@ public class HTTPInterface {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
Log.e("getBrowserLabel", "onComplete: ");
|
||||||
new URLUtils(context).setBrowserList();
|
new URLUtils(context).setBrowserList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void setLabelResponse(Context context, BaseResponse<Label> response) {
|
||||||
|
if (response.code == 200) {
|
||||||
|
String home_page = response.data.getHome_page();
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "homepagURL", home_page);
|
||||||
|
//主页
|
||||||
|
Intent homepag = new Intent("qch_app_brower_homepage");
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
homepag.setPackage("com.android.settings")
|
||||||
|
.setPackage("com.android.browser");
|
||||||
|
}
|
||||||
|
if (!TextUtils.isEmpty(home_page)) {
|
||||||
|
homepag.putExtra("homepage", home_page);
|
||||||
|
} else {
|
||||||
|
homepag.putExtra("homepage", "Invalid");
|
||||||
|
}
|
||||||
|
context.sendBroadcast(homepag);
|
||||||
|
|
||||||
|
//书签
|
||||||
|
String label_page = response.data.getLabel_page();
|
||||||
|
Intent websiteBookMark = new Intent("qch_app_brower_website");
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
websiteBookMark.setPackage("com.android.settings")
|
||||||
|
.setPackage("com.android.browser");
|
||||||
|
}
|
||||||
|
if (label_page != null && !"".equals(label_page)) {
|
||||||
|
websiteBookMark.putExtra("websiteBookMark", label_page);
|
||||||
|
} else {
|
||||||
|
websiteBookMark.putExtra("websiteBookMark", "Invalid");
|
||||||
|
}
|
||||||
|
context.sendBroadcast(websiteBookMark);
|
||||||
|
} else {
|
||||||
|
Intent intent1 = new Intent("qch_app_brower_homepage");
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
intent1.setPackage("com.android.settings")
|
||||||
|
.setPackage("com.android.browser");
|
||||||
|
}
|
||||||
|
intent1.putExtra("homepage", "Invalid");
|
||||||
|
context.sendBroadcast(intent1);
|
||||||
|
Intent intent2 = new Intent("qch_app_brower_website");
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
intent2.setPackage("com.android.settings")
|
||||||
|
.setPackage("com.android.browser");
|
||||||
|
}
|
||||||
|
intent2.putExtra("websiteBookMark", "Invalid");
|
||||||
|
context.sendBroadcast(intent2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void getAppStart(final Context context, List<AppInfo> appInfoList) {
|
public static void getAppStart(final Context context, List<AppInfo> appInfoList) {
|
||||||
NetInterfaceManager.getInstance().getAppStartControl()
|
NetInterfaceManager.getInstance().getAppStartControl()
|
||||||
.subscribe(new Observer<BaseResponse<List<AppStart>>>() {
|
.subscribe(new Observer<BaseResponse<List<AppStart>>>() {
|
||||||
@@ -797,7 +888,7 @@ public class HTTPInterface {
|
|||||||
.subscribe(new Observer<BaseResponse>() {
|
.subscribe(new Observer<BaseResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(@NonNull Disposable d) {
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
Log.e("getSystemSettings", "onSubscribe: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -813,11 +904,12 @@ public class HTTPInterface {
|
|||||||
@Override
|
@Override
|
||||||
public void onError(@NonNull Throwable e) {
|
public void onError(@NonNull Throwable e) {
|
||||||
Log.e("getSystemSettings", "onError: " + e.getMessage());
|
Log.e("getSystemSettings", "onError: " + e.getMessage());
|
||||||
|
onComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
Log.e("getSystemSettings", "onComplete: ");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.info.sn.network.api;
|
package com.info.sn.network.api;
|
||||||
|
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
|
import com.info.sn.bean.zuoye.browser.BrowserApiData;
|
||||||
import com.info.sn.network.UrlAddress;
|
import com.info.sn.network.UrlAddress;
|
||||||
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
@@ -9,7 +10,7 @@ import retrofit2.http.Query;
|
|||||||
|
|
||||||
public interface Browser {
|
public interface Browser {
|
||||||
@GET(UrlAddress.SET_BROWSER_URL)
|
@GET(UrlAddress.SET_BROWSER_URL)
|
||||||
Observable<BaseResponse> getBrowser(
|
Observable<BaseResponse<BrowserApiData>> getBrowser(
|
||||||
@Query("sn") String sn
|
@Query("sn") String sn
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.info.sn.network.api;
|
package com.info.sn.network.api;
|
||||||
|
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
|
import com.info.sn.bean.zuoye.Label;
|
||||||
import com.info.sn.network.UrlAddress;
|
import com.info.sn.network.UrlAddress;
|
||||||
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
@@ -9,7 +10,7 @@ import retrofit2.http.Query;
|
|||||||
|
|
||||||
public interface BrowserLabel {
|
public interface BrowserLabel {
|
||||||
@GET(UrlAddress.SET_BROWSER_LABEL)
|
@GET(UrlAddress.SET_BROWSER_LABEL)
|
||||||
Observable<BaseResponse> getLabel(
|
Observable<BaseResponse<Label>> getLabel(
|
||||||
@Query("sn") String sn
|
@Query("sn") String sn
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ import okhttp3.MediaType;
|
|||||||
import okhttp3.MultipartBody;
|
import okhttp3.MultipartBody;
|
||||||
import okhttp3.RequestBody;
|
import okhttp3.RequestBody;
|
||||||
|
|
||||||
|
import static com.info.sn.service.ManagerService.LOCK_STATE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义接收器
|
* 自定义接收器
|
||||||
* <p>
|
* <p>
|
||||||
@@ -253,8 +255,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
|||||||
Handler.getMain().postDelayed(new Runnable() {
|
Handler.getMain().postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
HTTPInterface.getBrowserWhiteList(context);
|
HTTPInterface.setBrowserWhiteList(context);
|
||||||
HTTPInterface.getBrowserLabel(context);
|
|
||||||
}
|
}
|
||||||
}, 2000);
|
}, 2000);
|
||||||
break;
|
break;
|
||||||
@@ -322,6 +323,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
//延时2秒执行,以防收到推送数据库还没有生效
|
||||||
Handler.getMain().postDelayed(new Runnable() {
|
Handler.getMain().postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -764,18 +766,19 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setLock_screen(Context context, String jsonString) {
|
private void setLock_screen(Context context, String jsonString) {
|
||||||
String type = "0";
|
int type = 0;
|
||||||
JSONObject jSONObject = JSON.parseObject(jsonString);
|
JSONObject jSONObject = JSON.parseObject(jsonString);
|
||||||
type = jSONObject.getString("type");
|
type = jSONObject.getInteger("type");
|
||||||
|
|
||||||
if (!ServiceAliveUtils.isServiceAlice(context, ManagerService.class.getName())) {
|
if (!ServiceAliveUtils.isServiceAlice(context, ManagerService.class.getName())) {
|
||||||
context.startService(new Intent(context, ManagerService.class));
|
context.startService(new Intent(context, ManagerService.class));
|
||||||
}
|
}
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
// intent.putExtra("name", name);
|
// intent.putExtra("name", name);
|
||||||
if ("1".equals(type)) {
|
SPUtils.put(context, LOCK_STATE, type);
|
||||||
|
if (1 == type) {
|
||||||
intent.setAction(ManagerService.ACTION_LOCK);
|
intent.setAction(ManagerService.ACTION_LOCK);
|
||||||
} else if ("0".equals(type)) {
|
} else if (0 == type) {
|
||||||
intent.setAction(ManagerService.ACTION_UNLOCK);
|
intent.setAction(ManagerService.ACTION_UNLOCK);
|
||||||
}
|
}
|
||||||
context.sendBroadcast(intent);
|
context.sendBroadcast(intent);
|
||||||
|
|||||||
@@ -404,6 +404,11 @@ public class MainService extends Service implements MainContact.MainView, Networ
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTimeControl() {
|
public void setTimeControl() {
|
||||||
|
mPresenter.getScreenLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setScreenLock() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.blankj.utilcode.util.NetworkUtils;
|
||||||
import com.info.sn.R;
|
import com.info.sn.R;
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
import com.info.sn.manager.ControlManager;
|
import com.info.sn.manager.ControlManager;
|
||||||
@@ -48,7 +49,7 @@ import io.reactivex.schedulers.Schedulers;
|
|||||||
/**
|
/**
|
||||||
* @author jgy02
|
* @author jgy02
|
||||||
*/
|
*/
|
||||||
public class ManagerService extends Service {
|
public class ManagerService extends Service implements NetworkUtils.OnNetworkStatusChangedListener {
|
||||||
private String TAG = ManagerService.class.getSimpleName();
|
private String TAG = ManagerService.class.getSimpleName();
|
||||||
|
|
||||||
public static String ACTION_LOCK = "LockScreenReceiver_lockscreen";
|
public static String ACTION_LOCK = "LockScreenReceiver_lockscreen";
|
||||||
@@ -59,6 +60,16 @@ public class ManagerService extends Service {
|
|||||||
private boolean screenlocked = false;
|
private boolean screenlocked = false;
|
||||||
private boolean timelocked = false;
|
private boolean timelocked = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisconnected() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnected(NetworkUtils.NetworkType networkType) {
|
||||||
|
getScreenLockState();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private interface Start {
|
private interface Start {
|
||||||
void onstar(long time);
|
void onstar(long time);
|
||||||
@@ -111,6 +122,7 @@ public class ManagerService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
NetworkUtils.registerNetworkStatusChangedListener(this);
|
||||||
registLockReceiver();
|
registLockReceiver();
|
||||||
registerTimeReceiver();
|
registerTimeReceiver();
|
||||||
registerScreenLockReceiver();
|
registerScreenLockReceiver();
|
||||||
@@ -148,19 +160,7 @@ public class ManagerService extends Service {
|
|||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(baseResponse.data));
|
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(baseResponse.data));
|
||||||
int is_screen_lock = jsonObject.getIntValue("is_screen_lock");
|
int is_screen_lock = jsonObject.getIntValue("is_screen_lock");
|
||||||
if (is_screen_lock == 1) {
|
setLockedState(is_screen_lock);
|
||||||
if (!timelocked) {
|
|
||||||
showFloatingWindow("屏幕已锁定");
|
|
||||||
}
|
|
||||||
screenlocked = true;
|
|
||||||
SPUtils.put(ManagerService.this, LOCK_STATE, 1);
|
|
||||||
} else {
|
|
||||||
if (!timelocked) {
|
|
||||||
hideFloatingWindow();
|
|
||||||
}
|
|
||||||
screenlocked = false;
|
|
||||||
SPUtils.put(ManagerService.this, LOCK_STATE, 0);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (!timelocked) {
|
if (!timelocked) {
|
||||||
hideFloatingWindow();
|
hideFloatingWindow();
|
||||||
@@ -182,7 +182,23 @@ public class ManagerService extends Service {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String LOCK_STATE = "SCRENN_LOOCKED_STATE";
|
private void setLockedState(int lockedState) {
|
||||||
|
if (lockedState == 1) {
|
||||||
|
if (!timelocked) {
|
||||||
|
showFloatingWindow("屏幕已锁定");
|
||||||
|
}
|
||||||
|
screenlocked = true;
|
||||||
|
SPUtils.put(ManagerService.this, LOCK_STATE, 1);
|
||||||
|
} else {
|
||||||
|
if (!timelocked) {
|
||||||
|
hideFloatingWindow();
|
||||||
|
}
|
||||||
|
screenlocked = false;
|
||||||
|
SPUtils.put(ManagerService.this, LOCK_STATE, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String LOCK_STATE = "SCRENN_LOOCKED_STATE";
|
||||||
|
|
||||||
private void showFloatingWindow(String name) {
|
private void showFloatingWindow(String name) {
|
||||||
if (Settings.canDrawOverlays(this)) {
|
if (Settings.canDrawOverlays(this)) {
|
||||||
@@ -321,7 +337,7 @@ public class ManagerService extends Service {
|
|||||||
Log.e(TAG, "TimeChangedReceiver:" + "timezone changed");
|
Log.e(TAG, "TimeChangedReceiver:" + "timezone changed");
|
||||||
} else if (Intent.ACTION_TIME_TICK.equals(action)) {
|
} else if (Intent.ACTION_TIME_TICK.equals(action)) {
|
||||||
Log.e(TAG, "TimeChangedReceiver:" + "time tick");
|
Log.e(TAG, "TimeChangedReceiver:" + "time tick");
|
||||||
// setFloatingWindow();
|
setFloatingWindow();
|
||||||
} else if (ACTION_UPDATE.equals(action)) {
|
} else if (ACTION_UPDATE.equals(action)) {
|
||||||
Log.e(TAG, "TimeChangedReceiver:" + "date update");
|
Log.e(TAG, "TimeChangedReceiver:" + "date update");
|
||||||
setFloatingWindow();
|
setFloatingWindow();
|
||||||
@@ -348,7 +364,9 @@ public class ManagerService extends Service {
|
|||||||
}
|
}
|
||||||
timelocked = true;
|
timelocked = true;
|
||||||
} else {
|
} else {
|
||||||
getScreenLockState();
|
// getScreenLockState();
|
||||||
|
int is_screen_lock = (int) SPUtils.get(ManagerService.this, LOCK_STATE, 0);
|
||||||
|
setLockedState(is_screen_lock);
|
||||||
if (!screenlocked) {
|
if (!screenlocked) {
|
||||||
hideFloatingWindow();
|
hideFloatingWindow();
|
||||||
}
|
}
|
||||||
@@ -410,7 +428,7 @@ public class ManagerService extends Service {
|
|||||||
|
|
||||||
private void sendScreenState(int stateCode) {
|
private void sendScreenState(int stateCode) {
|
||||||
Log.e(TAG, "sendScreenState: code:" + stateCode);
|
Log.e(TAG, "sendScreenState: code:" + stateCode);
|
||||||
Log.e(TAG, "sendScreenState: sn: " + Utils.getSerial());
|
// Log.e(TAG, "sendScreenState: sn: " + Utils.getSerial());
|
||||||
NetInterfaceManager.getInstance().setScreen()
|
NetInterfaceManager.getInstance().setScreen()
|
||||||
.setScreenState(Utils.getSerial(), stateCode)
|
.setScreenState(Utils.getSerial(), stateCode)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
@@ -500,6 +518,7 @@ public class ManagerService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
NetworkUtils.unregisterNetworkStatusChangedListener(this);
|
||||||
if (null != mTimeChangedReceiver) {
|
if (null != mTimeChangedReceiver) {
|
||||||
unregisterReceiver(mTimeChangedReceiver);
|
unregisterReceiver(mTimeChangedReceiver);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,7 +253,11 @@ public class StepService extends Service implements NetworkUtils.OnNetworkStatus
|
|||||||
jsonObject.put("online", state);
|
jsonObject.put("online", state);
|
||||||
if (null != client) {
|
if (null != client) {
|
||||||
Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toJSONString());
|
Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toJSONString());
|
||||||
client.send(jsonObject.toJSONString());
|
try {
|
||||||
|
client.send(jsonObject.toJSONString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.i(TAG, "sendMsg :" + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.i("JWebSocketClientService", "未连接");
|
Log.i("JWebSocketClientService", "未连接");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,4 +35,12 @@ public class ToastUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void showCenter(final String msg) {
|
||||||
|
ToastUtils.make()
|
||||||
|
.setBgColor(ColorUtils.getColor(R.color.toast_color))
|
||||||
|
.setTextColor(Color.WHITE)
|
||||||
|
.setGravity(Gravity.CENTER, 0, 0)
|
||||||
|
.setNotUseSystemToast()
|
||||||
|
.show(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,18 +2,24 @@ package com.info.sn.utils;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.webkit.WebSettings;
|
import android.webkit.WebSettings;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.ObservableEmitter;
|
import io.reactivex.ObservableEmitter;
|
||||||
@@ -37,115 +43,180 @@ public class URLUtils {
|
|||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||||
public void setBrowserList() {
|
public void setBrowserList() {
|
||||||
String whiteList = JGYUtils.getString(mContext.getContentResolver(), "DeselectBrowserArray");
|
String oldwhiteList = JGYUtils.getString(mContext.getContentResolver(), "DeselectBrowserArray");
|
||||||
String homePage = JGYUtils.getString(mContext.getContentResolver(), "homepagURL");
|
String oldHomePage = JGYUtils.getString(mContext.getContentResolver(), "homepagURL");
|
||||||
Log.e(TAG, "setBrowserList old: " + whiteList);
|
Log.e(TAG, "setBrowserList old: " + oldwhiteList);
|
||||||
|
if (TextUtils.isEmpty(oldwhiteList) && TextUtils.isEmpty(oldHomePage)) {
|
||||||
HashSet<String> URLList = new HashSet<>();
|
Log.e(TAG, "getBrowserWhiteList: " + "oldwhiteList is empty");
|
||||||
if (!TextUtils.isEmpty(whiteList)){
|
Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", "Invalid");
|
||||||
URLList.addAll(Arrays.asList(whiteList.split(",")));
|
} else {
|
||||||
}
|
HashSet<String> URLList = new HashSet<>();
|
||||||
URLList.add("https://xdf.gankao.com");
|
if (!TextUtils.isEmpty(oldwhiteList)) {
|
||||||
URLList.add("https://www.gankao.com");
|
URLList.addAll(Arrays.asList(oldwhiteList.split(",")));
|
||||||
if (!TextUtils.isEmpty(homePage)) {
|
|
||||||
if (!URLList.contains(homePage)) {
|
|
||||||
URLList.add(homePage);
|
|
||||||
}
|
}
|
||||||
}
|
URLList.add("https://xdf.gankao.com");
|
||||||
URLList.removeIf(new Predicate<String>() {
|
URLList.add("https://www.gankao.com");
|
||||||
@Override
|
if (!TextUtils.isEmpty(oldHomePage) && !URLList.contains(oldHomePage)) {
|
||||||
public boolean test(String s) {
|
URLList.add(oldHomePage);
|
||||||
return TextUtils.isEmpty(s.trim());
|
|
||||||
}
|
}
|
||||||
});
|
URLList.removeIf(s -> TextUtils.isEmpty(s.trim()));
|
||||||
Log.e(TAG, "setBrowserList: " + URLList);
|
if (URLList.size() == 0) {
|
||||||
Observable.create(new ObservableOnSubscribe<String>() {
|
Log.e(TAG, "setBrowserWhiteList: URLList set is empty , set Invalid");
|
||||||
@Override
|
Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", "Invalid");
|
||||||
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
|
return;
|
||||||
baseURLList.clear();
|
}
|
||||||
baseURLList.addAll(URLList);
|
Log.e(TAG, "setBrowserList: " + URLList);
|
||||||
for (String url : URLList) {
|
Observable.create(new ObservableOnSubscribe<String>() {
|
||||||
if (TextUtils.isEmpty(url.trim())){
|
@Override
|
||||||
continue;
|
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
|
||||||
}
|
baseURLList.clear();
|
||||||
if (url.startsWith("http://")) {
|
baseURLList.addAll(URLList);
|
||||||
String noHttp = url.substring(7);
|
for (String url : URLList) {
|
||||||
if (!baseURLList.contains(noHttp)) {
|
Log.e(TAG, "subscribe: " + url);
|
||||||
baseURLList.add(noHttp);
|
if (TextUtils.isEmpty(url.trim())) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
emitter.onNext(getOkHttpURL(url));
|
if (haveDomain(url)) {
|
||||||
} else if (url.startsWith("https://")) {
|
nohttpURLList.add("m." + getDomain(url));
|
||||||
String noHttps = url.substring(8);
|
}
|
||||||
if (!baseURLList.contains(noHttps)) {
|
if (!url.startsWith("http")) {
|
||||||
baseURLList.add(noHttps);
|
nohttpURLList.add(url);
|
||||||
|
String httpsUrl = "https://" + url;
|
||||||
|
String httpUrl = "http://" + url;
|
||||||
|
emitter.onNext(getOkHttpURL(httpsUrl));
|
||||||
|
emitter.onNext(getOkHttpURL(httpUrl));
|
||||||
|
baseURLList.add(httpsUrl);
|
||||||
|
String pattern = "(http|https)://(www.)?(\\w+(\\.)?)+";
|
||||||
|
Pattern r = Pattern.compile(pattern);
|
||||||
|
Matcher m = r.matcher(httpsUrl);
|
||||||
|
while (m.find()) {
|
||||||
|
Log.e(TAG, "matcher1: " + m.group());
|
||||||
|
baseURLList.add(m.group());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (url.endsWith("/")) {
|
||||||
|
baseURLList.add(url.substring(0, url.length() - 1));
|
||||||
|
}
|
||||||
|
//临时
|
||||||
|
if (baseURLList.size() != 0) {
|
||||||
|
Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", String.join(",", baseURLList));
|
||||||
|
}
|
||||||
|
Log.e(TAG, "subscribe: baseURLList: " + baseURLList);
|
||||||
|
Log.e(TAG, "subscribe: DeselectBrowserArray: " + Settings.System.getString(mContext.getContentResolver(), "DeselectBrowserArray"));
|
||||||
|
String pattern = "[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\\.?";
|
||||||
|
Pattern r = Pattern.compile(pattern);
|
||||||
|
Matcher m = r.matcher(url);
|
||||||
|
if (m.find()) {
|
||||||
|
nohttpURLList.add(m.group());
|
||||||
|
Log.e(TAG, "matcher2: " + m.group());
|
||||||
|
String httpsUrl = "https://" + m.group();
|
||||||
|
String httpUrl = "http://" + m.group();
|
||||||
|
emitter.onNext(getOkHttpURL(httpsUrl));
|
||||||
|
emitter.onNext(getOkHttpURL(httpUrl));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
emitter.onNext(getOkHttpURL(url));
|
|
||||||
} else {
|
|
||||||
baseURLList.add("http://" + url);
|
|
||||||
emitter.onNext(getOkHttpURL("http://" + url));
|
|
||||||
baseURLList.add("https://" + url);
|
|
||||||
emitter.onNext(getOkHttpURL("https://" + url));
|
|
||||||
}
|
}
|
||||||
Log.e(TAG, "subscribe: " + url);
|
emitter.onComplete();
|
||||||
}
|
}
|
||||||
emitter.onComplete();
|
}).subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(String s) {
|
||||||
|
Log.e(TAG, "onNext: " + s);
|
||||||
|
if (!baseURLList.contains(s) && !TextUtils.isEmpty(s)) {
|
||||||
|
baseURLList.add(s);
|
||||||
|
}
|
||||||
|
if (s.startsWith("http://")) {
|
||||||
|
String noHttp = s.substring(7);
|
||||||
|
Log.e(TAG, "onNext: noHttp: " + noHttp);
|
||||||
|
if (!baseURLList.contains(noHttp)) {
|
||||||
|
baseURLList.add(noHttp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (s.startsWith("https://")) {
|
||||||
|
String noHttps = s.substring(8);
|
||||||
|
Log.e(TAG, "onNext: noHttps: " + noHttps);
|
||||||
|
if (!baseURLList.contains(noHttps)) {
|
||||||
|
baseURLList.add(noHttps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
Log.e(TAG, "onError: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
Log.e(TAG, "onComplete: ");
|
||||||
|
baseURLList.addAll(nohttpURLList);
|
||||||
|
baseURLList.removeIf(TextUtils::isEmpty);
|
||||||
|
String DeselectBrowserArray = String.join(",", baseURLList);
|
||||||
|
boolean write = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", DeselectBrowserArray);
|
||||||
|
Log.e(TAG, "onComplete: " + "white list: " + DeselectBrowserArray);
|
||||||
|
Log.e(TAG, "onComplete: " + "write :" + write);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private HashSet<String> blackList = new HashSet<>();
|
||||||
|
private HashSet<String> blackIPList = new HashSet<>();
|
||||||
|
|
||||||
|
public void setBrowserBlackList() {
|
||||||
|
String qch_webblack_url = Settings.System.getString(mContext.getContentResolver(), "qch_webblack_url");
|
||||||
|
Log.e(TAG, "setBrowserBlackList: qch_webblack_url = " + qch_webblack_url);
|
||||||
|
if (TextUtils.isEmpty(qch_webblack_url)) {
|
||||||
|
Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", "Invalid");
|
||||||
|
} else {
|
||||||
|
String black_ip = (String) SPUtils.get(mContext, "black_ip", "");
|
||||||
|
if (!TextUtils.isEmpty(black_ip)) {
|
||||||
|
blackIPList = new HashSet<>(Arrays.asList(black_ip.split(",")));
|
||||||
}
|
}
|
||||||
}).subscribeOn(Schedulers.io())
|
blackIPList.removeIf(TextUtils::isEmpty);
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
HashSet<String> URLList = new HashSet<>(Arrays.asList(qch_webblack_url.trim().split(",")));
|
||||||
.subscribe(new Observer<String>() {
|
for (String url : URLList) {
|
||||||
@Override
|
if (TextUtils.isEmpty(url)) {
|
||||||
public void onSubscribe(Disposable d) {
|
continue;
|
||||||
|
}
|
||||||
}
|
Log.e(TAG, "setBrowserBlackList: url: " + url);
|
||||||
|
if (qch_webblack_url.startsWith("http://")) {
|
||||||
@Override
|
blackList.add(url);
|
||||||
public void onNext(String s) {
|
blackList.add(url.replace("http://", "https://"));
|
||||||
Log.e(TAG, "onNext: " + s);
|
} else if (qch_webblack_url.startsWith("https://")) {
|
||||||
if (!baseURLList.contains(s)) {
|
blackList.add(url);
|
||||||
baseURLList.add(s);
|
blackList.add(url.replace("https://", "http://"));
|
||||||
}
|
} else {
|
||||||
if (s.startsWith("http://")) {
|
blackList.add("http://" + url);
|
||||||
String noHttp = s.substring(7);
|
blackList.add("https://" + url);
|
||||||
Log.e(TAG, "onNext: noHttp: " + noHttp);
|
}
|
||||||
if (!baseURLList.contains(noHttp)) {
|
}
|
||||||
baseURLList.add(noHttp);
|
blackList.addAll(blackIPList);
|
||||||
}
|
blackList.removeIf(TextUtils::isEmpty);
|
||||||
}
|
Log.e(TAG, "setBrowserBlackList: blackList: " + blackList);
|
||||||
if (s.startsWith("https://")) {
|
boolean write = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", String.join(",", blackList));
|
||||||
String noHttps = s.substring(8);
|
Log.e(TAG, "setBrowserBlackList: write: " + write);
|
||||||
Log.e(TAG, "onNext: noHttps: " + noHttps);
|
}
|
||||||
if (!baseURLList.contains(noHttps)) {
|
|
||||||
baseURLList.add(noHttps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(Throwable e) {
|
|
||||||
Log.e(TAG, "onError: " + e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onComplete() {
|
|
||||||
Log.e(TAG, "onComplete: ");
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
|
||||||
for (String s : baseURLList) {
|
|
||||||
if (stringBuilder.length() > 0) {
|
|
||||||
stringBuilder.append(",");
|
|
||||||
}
|
|
||||||
stringBuilder.append(s);
|
|
||||||
}
|
|
||||||
String DeselectBrowserArray = stringBuilder.toString();
|
|
||||||
boolean write = JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray", DeselectBrowserArray);
|
|
||||||
Log.e(TAG, "onComplete: " + "white list: " + DeselectBrowserArray);
|
|
||||||
Log.e(TAG, "onComplete: " + "write :" + write);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getOkHttpURL(String URL) {
|
private String getOkHttpURL(String URL) {
|
||||||
OkHttpClient okHttpClient = new OkHttpClient();
|
if (!URL.startsWith("http")) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
OkHttpClient okHttpClient = new OkHttpClient.Builder()
|
||||||
|
.connectTimeout(1, TimeUnit.SECONDS)
|
||||||
|
.writeTimeout(1, TimeUnit.SECONDS)
|
||||||
|
.readTimeout(1, TimeUnit.SECONDS)
|
||||||
|
.build();
|
||||||
final Request request = new Request.Builder()
|
final Request request = new Request.Builder()
|
||||||
.url(URL)
|
.url(URL)
|
||||||
.removeHeader("User-Agent")
|
.removeHeader("User-Agent")
|
||||||
@@ -179,6 +250,36 @@ public class URLUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//https://blog.csdn.net/yong472727322/article/details/73321935
|
||||||
|
//https://blog.csdn.net/liehuo123/article/details/81509486?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242
|
||||||
|
//https://www.cnblogs.com/breakdown/archive/2012/09/17/2689101.html
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取主机名
|
||||||
|
*
|
||||||
|
* @param url 网址
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
//https://blog.csdn.net/smallnetvisitor/article/details/84516347
|
||||||
|
public String getDomain(String url) {
|
||||||
|
String regexStr = "(?<=//|)((\\w)+(\\.cn|\\.com.cn|\\.org.cn|\\.com|\\.net|\\.org|\\.cc|\\.biz|\\.uk|\\.info|\\.in|\\.eu))+";
|
||||||
|
Pattern p = Pattern.compile(regexStr);
|
||||||
|
Matcher m = p.matcher(url);
|
||||||
|
String domainVal = "";
|
||||||
|
if (m.find()) {
|
||||||
|
domainVal = m.group();
|
||||||
|
}
|
||||||
|
return domainVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean haveDomain(String url) {
|
||||||
|
String regexStr = "(?<=//|)((\\w)+(\\.cn|\\.com.cn|\\.org.cn|\\.com|\\.net|\\.org|\\.cc|\\.biz|\\.uk|\\.info|\\.in|\\.eu))+";
|
||||||
|
Pattern p = Pattern.compile(regexStr);
|
||||||
|
Matcher m = p.matcher(url);
|
||||||
|
return m.find();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets ip.
|
* Gets ip.
|
||||||
* 通过url获取到域名
|
* 通过url获取到域名
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
android:text="@string/hello"
|
android:text="@string/hello"
|
||||||
android:textColor="@color/activation_color"
|
android:textColor="@color/activation_color"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="gone"
|
android:visibility="visible"
|
||||||
app:layout_constraintStart_toStartOf="@+id/textView3"
|
app:layout_constraintStart_toStartOf="@+id/textView3"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/textView3" />
|
app:layout_constraintTop_toBottomOf="@+id/textView3" />
|
||||||
|
|
||||||
@@ -82,14 +82,15 @@
|
|||||||
android:id="@+id/tv_pripolicy"
|
android:id="@+id/tv_pripolicy"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginStart="8dp"
|
||||||
android:autoLink="all"
|
android:autoLink="all"
|
||||||
android:text="@string/privacy_policy"
|
android:text="@string/privacy_policy"
|
||||||
android:textColor="@color/activation_color"
|
android:textColor="@color/activation_color"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/tv_guide"
|
||||||
app:layout_constraintStart_toEndOf="@+id/tv_guide"
|
app:layout_constraintStart_toEndOf="@+id/tv_guide"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/textView3" />
|
app:layout_constraintTop_toTopOf="@+id/tv_guide" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_useragreement"
|
android:id="@+id/tv_useragreement"
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
android:text="@string/hello"
|
android:text="@string/hello"
|
||||||
android:textColor="@color/activation_color"
|
android:textColor="@color/activation_color"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="gone"
|
android:visibility="visible"
|
||||||
app:layout_constraintStart_toStartOf="@+id/textView3"
|
app:layout_constraintStart_toStartOf="@+id/textView3"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/textView3" />
|
app:layout_constraintTop_toBottomOf="@+id/textView3" />
|
||||||
|
|
||||||
@@ -84,14 +84,15 @@
|
|||||||
android:id="@+id/tv_pripolicy"
|
android:id="@+id/tv_pripolicy"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginStart="8dp"
|
||||||
android:autoLink="all"
|
android:autoLink="all"
|
||||||
android:text="@string/privacy_policy"
|
android:text="@string/privacy_policy"
|
||||||
android:textColor="@color/activation_color"
|
android:textColor="@color/activation_color"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/tv_guide"
|
||||||
app:layout_constraintStart_toEndOf="@+id/tv_guide"
|
app:layout_constraintStart_toEndOf="@+id/tv_guide"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/textView3" />
|
app:layout_constraintTop_toTopOf="@+id/tv_guide" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_useragreement"
|
android:id="@+id/tv_useragreement"
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ allprojects {
|
|||||||
gradle.projectsEvaluated {
|
gradle.projectsEvaluated {
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
//设置jar相对包路径或绝对路径
|
//设置jar相对包路径或绝对路径
|
||||||
options.compilerArgs.add('-Xbootclasspath/p:app/src/main/libs/classes.jar')
|
options.compilerArgs.add('-Xbootclasspath/p:libs/framework.jar')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user