version:1.8.5
date:2021-12-03 15:42:13 fix: add:准备移植到老人平板项目
This commit is contained in:
@@ -221,6 +221,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
HTTPInterface.setBrowserWhiteList(this);
|
||||
if (DeviceManager.isDebugMode()) {
|
||||
Log.e(TAG, "getAllSPUtils: " + JSONObject.toJSONString(SPUtils.getAll(this)));
|
||||
// TimeUtils.setSystemTime(1627702095000L);
|
||||
@@ -894,13 +895,17 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
||||
|
||||
@Override
|
||||
public void setAppStart() {
|
||||
Log.e(TAG, "SettingFinished: " + (System.currentTimeMillis() - timeMillis) + " ms");
|
||||
mPresenter.getTimeControl();
|
||||
}
|
||||
|
||||
@Override
|
||||
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 setAppStart();
|
||||
void setTimeControl();
|
||||
void setScreenLock();
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<MainView> {
|
||||
@@ -82,5 +83,7 @@ public class MainContact {
|
||||
void getAppStart();
|
||||
//获取时间管控、
|
||||
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.AppStart;
|
||||
import com.info.sn.bean.zuoye.BaseResponse;
|
||||
import com.info.sn.bean.zuoye.BrowserBean;
|
||||
import com.info.sn.bean.zuoye.Response;
|
||||
import com.info.sn.bean.zuoye.SystemSettings;
|
||||
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.bean.zuoye.UserAvatarInfo;
|
||||
import com.info.sn.bean.zuoye.UserInfo;
|
||||
import com.info.sn.config.Configs;
|
||||
import com.info.sn.config.Scheme;
|
||||
import com.info.sn.jpush.TagAliasOperatorHelper;
|
||||
import com.info.sn.manager.AmapManager;
|
||||
import com.info.sn.manager.ControlManager;
|
||||
import com.info.sn.manager.NetInterfaceManager;
|
||||
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.RemoteService;
|
||||
import com.info.sn.utils.ApkUtils;
|
||||
import com.info.sn.utils.CXAESUtil;
|
||||
import com.info.sn.utils.JGYUtils;
|
||||
import com.info.sn.utils.LaunchTools;
|
||||
import com.info.sn.utils.SPUtils;
|
||||
import com.info.sn.utils.ServiceAliveUtils;
|
||||
import com.info.sn.utils.TimeUtils;
|
||||
import com.info.sn.utils.ToastUtil;
|
||||
import com.info.sn.utils.URLUtils;
|
||||
@@ -60,16 +59,13 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
||||
import static com.info.sn.jpush.TagAliasOperatorHelper.sequence;
|
||||
|
||||
/**
|
||||
* @author jgy02
|
||||
*/
|
||||
@@ -820,35 +816,27 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
|
||||
@Override
|
||||
public void getBrowserLabel() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getLabelControl()
|
||||
NetInterfaceManager.getInstance().getLabelControl()
|
||||
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
.subscribe(new Observer<BaseResponse<Label>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
Log.e(TAG + "getBrowserLabel", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(BaseResponse baseResponse) {
|
||||
Log.e(TAG + "getBrowserLabel", "onNext: " + baseResponse);
|
||||
int code = baseResponse.code;
|
||||
if (code == 200) {
|
||||
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();
|
||||
public void onNext(BaseResponse<Label> labelBaseResponse) {
|
||||
Log.e(TAG + "getBrowserLabel", "onNext: " + labelBaseResponse);
|
||||
if (labelBaseResponse.code == 200) {
|
||||
String home_page = labelBaseResponse.data.getHome_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");
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
homepag.setPackage("com.android.settings")
|
||||
.setPackage("com.android.browser");
|
||||
}
|
||||
if (home_page != null && !home_page.equals("")) {
|
||||
if (!TextUtils.isEmpty(home_page)) {
|
||||
homepag.putExtra("homepage", home_page);
|
||||
} else {
|
||||
homepag.putExtra("homepage", "Invalid");
|
||||
@@ -856,12 +844,13 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
mContext.sendBroadcast(homepag);
|
||||
|
||||
//书签
|
||||
String label_page = labelBaseResponse.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 && !label_page.equals("")) {
|
||||
if (!TextUtils.isEmpty(label_page)) {
|
||||
websiteBookMark.putExtra("websiteBookMark", label_page);
|
||||
} else {
|
||||
websiteBookMark.putExtra("websiteBookMark", "Invalid");
|
||||
@@ -904,42 +893,33 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
*/
|
||||
@Override
|
||||
public void getBrowserWhiteList() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getBrowserControl()
|
||||
NetInterfaceManager.getInstance().getBrowserControl()
|
||||
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
.subscribe(new Observer<BaseResponse<BrowserApiData>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
Log.e(TAG + "getBrowserWhiteList", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(BaseResponse baseResponse) {
|
||||
Log.e(TAG + "getBrowserWhiteList", "onNext: ");
|
||||
int code = baseResponse.code;
|
||||
if (code == 200) {
|
||||
JSONObject jsonObject = (JSONObject) JSON.toJSON(baseResponse.data);
|
||||
public void onNext(BaseResponse<BrowserApiData> response) {
|
||||
Log.e(TAG + "getBrowserWhiteList", "onNext: " + response);
|
||||
if (response.code == 200) {
|
||||
//白名单
|
||||
List<BrowserBean> white = JSON.parseArray(jsonObject.getString("browser"), BrowserBean.class);
|
||||
List<BrowserBean> white = response.data.getWhiteList();
|
||||
if (null != white && white.size() != 0) {
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (BrowserBean bean : white) {
|
||||
s.append(bean.getAddress()).append(",");
|
||||
}
|
||||
boolean whiteList = JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray", s.toString());
|
||||
Log.e(TAG + "getBrowserWhiteList", "setBrowserList_white: ");
|
||||
boolean whiteList = JGYUtils.putString(mContext.getContentResolver(), "DeselectBrowserArray",
|
||||
white.stream().map(BrowserBean::getAddress).collect(Collectors.joining(",")));
|
||||
Log.e("getBrowserWhiteList", "setBrowserList_white:" + white + ":" + whiteList);
|
||||
} else {
|
||||
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) {
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (BrowserBean bean : black) {
|
||||
s.append(bean.getAddress()).append(",");
|
||||
}
|
||||
boolean blackList = JGYUtils.putString(mContext.getContentResolver(), "qch_webblack_url", s.toString());
|
||||
Log.e(TAG + "getBrowserWhiteList", "setBrowserList_black:$blackList:$black");
|
||||
boolean blackList = JGYUtils.putString(mContext.getContentResolver(), "qch_webblack_url",
|
||||
black.stream().map(BrowserBean::getAddress).collect(Collectors.joining(",")));
|
||||
Log.e("getBrowserWhiteList", "setBrowserList_black:" + black + ":" + blackList);
|
||||
} else {
|
||||
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;
|
||||
|
||||
public class BrowserLabel implements Serializable {
|
||||
public class Label implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8836213741844057940L;
|
||||
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;
|
||||
|
||||
@@ -22,4 +27,10 @@ public class BrowserBean implements Serializable {
|
||||
public void setType(int 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.AppStart;
|
||||
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.UserInfo;
|
||||
import com.info.sn.bean.zuoye.browser.BrowserApiData;
|
||||
import com.info.sn.network.UrlAddress;
|
||||
import com.info.sn.network.api.APPJump;
|
||||
import com.info.sn.network.api.AddAppInstall;
|
||||
@@ -125,6 +127,38 @@ public class NetInterfaceManager {
|
||||
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();
|
||||
@@ -132,8 +166,9 @@ public class NetInterfaceManager {
|
||||
builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间
|
||||
builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
|
||||
builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
|
||||
builder.addInterceptor(myHttpInterceptor);
|
||||
builder.addNetworkInterceptor(mRequestInterceptor);
|
||||
builder.addInterceptor(interceptor);
|
||||
// builder.addInterceptor(myHttpInterceptor);
|
||||
// builder.addNetworkInterceptor(mRequestInterceptor);
|
||||
|
||||
// 设置缓存文件路径
|
||||
String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache";
|
||||
@@ -197,14 +232,14 @@ public class NetInterfaceManager {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getBrowserControl() {
|
||||
public Observable<BaseResponse<BrowserApiData>> getBrowserControl() {
|
||||
return mRetrofit.create(Browser.class)
|
||||
.getBrowser(Utils.getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getLabelControl() {
|
||||
public Observable<BaseResponse<Label>> getLabelControl() {
|
||||
return mRetrofit.create(BrowserLabel.class)
|
||||
.getLabel(Utils.getSerial())
|
||||
.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.AppUploadInfo;
|
||||
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.manager.ControlManager;
|
||||
import com.info.sn.manager.NetInterfaceManager;
|
||||
@@ -44,14 +46,19 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.jpush.android.api.JPushInterface;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.ObservableOnSubscribe;
|
||||
import io.reactivex.ObservableSource;
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.functions.BiFunction;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
||||
@@ -97,127 +104,161 @@ public class HTTPInterface {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param context 获取浏览器黑白名单
|
||||
*/
|
||||
public static void getBrowserWhiteList(final Context context) {
|
||||
NetInterfaceManager.getInstance().getBrowserControl()
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
public static void setBrowserWhiteList(Context context) {
|
||||
Observable.zip(NetInterfaceManager.getInstance().getLabelControl(),
|
||||
NetInterfaceManager.getInstance().getBrowserControl(),
|
||||
new BiFunction<BaseResponse<Label>, BaseResponse<BrowserApiData>, HashSet<String>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
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", " ");
|
||||
public HashSet<String> apply(BaseResponse<Label> baseResponse, BaseResponse<BrowserApiData> baseResponse2) throws Exception {
|
||||
HashSet<String> hashSet = new HashSet<>();
|
||||
setLabelResponse(context, baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
if (!TextUtils.isEmpty(baseResponse.data.getHome_page())) {
|
||||
hashSet.add(baseResponse.data.getHome_page());
|
||||
}
|
||||
//黑名单
|
||||
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
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("setBrowser", "onError: " + e.getMessage());
|
||||
public void onNext(HashSet<String> strings) {
|
||||
Log.e("setBrowserWhiteList", "onNext: " + strings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
Log.e("setBrowserWhiteList", "onError: " + e.getMessage());
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
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) {
|
||||
NetInterfaceManager.getInstance().getLabelControl()
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
.subscribe(new Observer<BaseResponse<Label>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
|
||||
Log.e("getBrowserLabel", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse listBaseResponse) {
|
||||
int code = listBaseResponse.code;
|
||||
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);
|
||||
}
|
||||
public void onNext(@NonNull BaseResponse<Label> response) {
|
||||
setLabelResponse(context, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -228,11 +269,61 @@ public class HTTPInterface {
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getBrowserLabel", "onComplete: ");
|
||||
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) {
|
||||
NetInterfaceManager.getInstance().getAppStartControl()
|
||||
.subscribe(new Observer<BaseResponse<List<AppStart>>>() {
|
||||
@@ -797,7 +888,7 @@ public class HTTPInterface {
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
|
||||
Log.e("getSystemSettings", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -813,11 +904,12 @@ public class HTTPInterface {
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getSystemSettings", "onError: " + e.getMessage());
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
Log.e("getSystemSettings", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.info.sn.network.api;
|
||||
|
||||
import com.info.sn.bean.zuoye.BaseResponse;
|
||||
import com.info.sn.bean.zuoye.browser.BrowserApiData;
|
||||
import com.info.sn.network.UrlAddress;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
@@ -9,7 +10,7 @@ import retrofit2.http.Query;
|
||||
|
||||
public interface Browser {
|
||||
@GET(UrlAddress.SET_BROWSER_URL)
|
||||
Observable<BaseResponse> getBrowser(
|
||||
Observable<BaseResponse<BrowserApiData>> getBrowser(
|
||||
@Query("sn") String sn
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.info.sn.network.api;
|
||||
|
||||
import com.info.sn.bean.zuoye.BaseResponse;
|
||||
import com.info.sn.bean.zuoye.Label;
|
||||
import com.info.sn.network.UrlAddress;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
@@ -9,7 +10,7 @@ import retrofit2.http.Query;
|
||||
|
||||
public interface BrowserLabel {
|
||||
@GET(UrlAddress.SET_BROWSER_LABEL)
|
||||
Observable<BaseResponse> getLabel(
|
||||
Observable<BaseResponse<Label>> getLabel(
|
||||
@Query("sn") String sn
|
||||
);
|
||||
}
|
||||
|
||||
@@ -85,6 +85,8 @@ import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
import static com.info.sn.service.ManagerService.LOCK_STATE;
|
||||
|
||||
/**
|
||||
* 自定义接收器
|
||||
* <p>
|
||||
@@ -253,8 +255,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
||||
Handler.getMain().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
HTTPInterface.getBrowserWhiteList(context);
|
||||
HTTPInterface.getBrowserLabel(context);
|
||||
HTTPInterface.setBrowserWhiteList(context);
|
||||
}
|
||||
}, 2000);
|
||||
break;
|
||||
@@ -322,6 +323,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//延时2秒执行,以防收到推送数据库还没有生效
|
||||
Handler.getMain().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -764,18 +766,19 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
||||
}
|
||||
|
||||
private void setLock_screen(Context context, String jsonString) {
|
||||
String type = "0";
|
||||
int type = 0;
|
||||
JSONObject jSONObject = JSON.parseObject(jsonString);
|
||||
type = jSONObject.getString("type");
|
||||
type = jSONObject.getInteger("type");
|
||||
|
||||
if (!ServiceAliveUtils.isServiceAlice(context, ManagerService.class.getName())) {
|
||||
context.startService(new Intent(context, ManagerService.class));
|
||||
}
|
||||
Intent intent = new Intent();
|
||||
// intent.putExtra("name", name);
|
||||
if ("1".equals(type)) {
|
||||
SPUtils.put(context, LOCK_STATE, type);
|
||||
if (1 == type) {
|
||||
intent.setAction(ManagerService.ACTION_LOCK);
|
||||
} else if ("0".equals(type)) {
|
||||
} else if (0 == type) {
|
||||
intent.setAction(ManagerService.ACTION_UNLOCK);
|
||||
}
|
||||
context.sendBroadcast(intent);
|
||||
|
||||
@@ -404,6 +404,11 @@ public class MainService extends Service implements MainContact.MainView, Networ
|
||||
|
||||
@Override
|
||||
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.JSONObject;
|
||||
import com.blankj.utilcode.util.NetworkUtils;
|
||||
import com.info.sn.R;
|
||||
import com.info.sn.bean.zuoye.BaseResponse;
|
||||
import com.info.sn.manager.ControlManager;
|
||||
@@ -48,7 +49,7 @@ import io.reactivex.schedulers.Schedulers;
|
||||
/**
|
||||
* @author jgy02
|
||||
*/
|
||||
public class ManagerService extends Service {
|
||||
public class ManagerService extends Service implements NetworkUtils.OnNetworkStatusChangedListener {
|
||||
private String TAG = ManagerService.class.getSimpleName();
|
||||
|
||||
public static String ACTION_LOCK = "LockScreenReceiver_lockscreen";
|
||||
@@ -59,6 +60,16 @@ public class ManagerService extends Service {
|
||||
private boolean screenlocked = false;
|
||||
private boolean timelocked = false;
|
||||
|
||||
@Override
|
||||
public void onDisconnected() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(NetworkUtils.NetworkType networkType) {
|
||||
getScreenLockState();
|
||||
}
|
||||
|
||||
|
||||
private interface Start {
|
||||
void onstar(long time);
|
||||
@@ -111,6 +122,7 @@ public class ManagerService extends Service {
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
NetworkUtils.registerNetworkStatusChangedListener(this);
|
||||
registLockReceiver();
|
||||
registerTimeReceiver();
|
||||
registerScreenLockReceiver();
|
||||
@@ -148,19 +160,7 @@ public class ManagerService extends Service {
|
||||
if (code == 200) {
|
||||
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(baseResponse.data));
|
||||
int is_screen_lock = jsonObject.getIntValue("is_screen_lock");
|
||||
if (is_screen_lock == 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);
|
||||
}
|
||||
setLockedState(is_screen_lock);
|
||||
} else {
|
||||
if (!timelocked) {
|
||||
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) {
|
||||
if (Settings.canDrawOverlays(this)) {
|
||||
@@ -321,7 +337,7 @@ public class ManagerService extends Service {
|
||||
Log.e(TAG, "TimeChangedReceiver:" + "timezone changed");
|
||||
} else if (Intent.ACTION_TIME_TICK.equals(action)) {
|
||||
Log.e(TAG, "TimeChangedReceiver:" + "time tick");
|
||||
// setFloatingWindow();
|
||||
setFloatingWindow();
|
||||
} else if (ACTION_UPDATE.equals(action)) {
|
||||
Log.e(TAG, "TimeChangedReceiver:" + "date update");
|
||||
setFloatingWindow();
|
||||
@@ -348,7 +364,9 @@ public class ManagerService extends Service {
|
||||
}
|
||||
timelocked = true;
|
||||
} else {
|
||||
getScreenLockState();
|
||||
// getScreenLockState();
|
||||
int is_screen_lock = (int) SPUtils.get(ManagerService.this, LOCK_STATE, 0);
|
||||
setLockedState(is_screen_lock);
|
||||
if (!screenlocked) {
|
||||
hideFloatingWindow();
|
||||
}
|
||||
@@ -410,7 +428,7 @@ public class ManagerService extends Service {
|
||||
|
||||
private void sendScreenState(int stateCode) {
|
||||
Log.e(TAG, "sendScreenState: code:" + stateCode);
|
||||
Log.e(TAG, "sendScreenState: sn: " + Utils.getSerial());
|
||||
// Log.e(TAG, "sendScreenState: sn: " + Utils.getSerial());
|
||||
NetInterfaceManager.getInstance().setScreen()
|
||||
.setScreenState(Utils.getSerial(), stateCode)
|
||||
.subscribeOn(Schedulers.io())
|
||||
@@ -500,6 +518,7 @@ public class ManagerService extends Service {
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
NetworkUtils.unregisterNetworkStatusChangedListener(this);
|
||||
if (null != mTimeChangedReceiver) {
|
||||
unregisterReceiver(mTimeChangedReceiver);
|
||||
}
|
||||
|
||||
@@ -253,7 +253,11 @@ public class StepService extends Service implements NetworkUtils.OnNetworkStatus
|
||||
jsonObject.put("online", state);
|
||||
if (null != client) {
|
||||
Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toJSONString());
|
||||
client.send(jsonObject.toJSONString());
|
||||
try {
|
||||
client.send(jsonObject.toJSONString());
|
||||
} catch (Exception e) {
|
||||
Log.i(TAG, "sendMsg :" + e.getLocalizedMessage());
|
||||
}
|
||||
} else {
|
||||
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.os.Build;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.webkit.WebSettings;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.ObservableEmitter;
|
||||
@@ -37,115 +43,180 @@ public class URLUtils {
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public void setBrowserList() {
|
||||
String whiteList = JGYUtils.getString(mContext.getContentResolver(), "DeselectBrowserArray");
|
||||
String homePage = JGYUtils.getString(mContext.getContentResolver(), "homepagURL");
|
||||
Log.e(TAG, "setBrowserList old: " + whiteList);
|
||||
|
||||
HashSet<String> URLList = new HashSet<>();
|
||||
if (!TextUtils.isEmpty(whiteList)){
|
||||
URLList.addAll(Arrays.asList(whiteList.split(",")));
|
||||
}
|
||||
URLList.add("https://xdf.gankao.com");
|
||||
URLList.add("https://www.gankao.com");
|
||||
if (!TextUtils.isEmpty(homePage)) {
|
||||
if (!URLList.contains(homePage)) {
|
||||
URLList.add(homePage);
|
||||
String oldwhiteList = JGYUtils.getString(mContext.getContentResolver(), "DeselectBrowserArray");
|
||||
String oldHomePage = JGYUtils.getString(mContext.getContentResolver(), "homepagURL");
|
||||
Log.e(TAG, "setBrowserList old: " + oldwhiteList);
|
||||
if (TextUtils.isEmpty(oldwhiteList) && TextUtils.isEmpty(oldHomePage)) {
|
||||
Log.e(TAG, "getBrowserWhiteList: " + "oldwhiteList is empty");
|
||||
Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", "Invalid");
|
||||
} else {
|
||||
HashSet<String> URLList = new HashSet<>();
|
||||
if (!TextUtils.isEmpty(oldwhiteList)) {
|
||||
URLList.addAll(Arrays.asList(oldwhiteList.split(",")));
|
||||
}
|
||||
}
|
||||
URLList.removeIf(new Predicate<String>() {
|
||||
@Override
|
||||
public boolean test(String s) {
|
||||
return TextUtils.isEmpty(s.trim());
|
||||
URLList.add("https://xdf.gankao.com");
|
||||
URLList.add("https://www.gankao.com");
|
||||
if (!TextUtils.isEmpty(oldHomePage) && !URLList.contains(oldHomePage)) {
|
||||
URLList.add(oldHomePage);
|
||||
}
|
||||
});
|
||||
Log.e(TAG, "setBrowserList: " + URLList);
|
||||
Observable.create(new ObservableOnSubscribe<String>() {
|
||||
@Override
|
||||
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
|
||||
baseURLList.clear();
|
||||
baseURLList.addAll(URLList);
|
||||
for (String url : URLList) {
|
||||
if (TextUtils.isEmpty(url.trim())){
|
||||
continue;
|
||||
}
|
||||
if (url.startsWith("http://")) {
|
||||
String noHttp = url.substring(7);
|
||||
if (!baseURLList.contains(noHttp)) {
|
||||
baseURLList.add(noHttp);
|
||||
URLList.removeIf(s -> TextUtils.isEmpty(s.trim()));
|
||||
if (URLList.size() == 0) {
|
||||
Log.e(TAG, "setBrowserWhiteList: URLList set is empty , set Invalid");
|
||||
Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", "Invalid");
|
||||
return;
|
||||
}
|
||||
Log.e(TAG, "setBrowserList: " + URLList);
|
||||
Observable.create(new ObservableOnSubscribe<String>() {
|
||||
@Override
|
||||
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
|
||||
baseURLList.clear();
|
||||
baseURLList.addAll(URLList);
|
||||
for (String url : URLList) {
|
||||
Log.e(TAG, "subscribe: " + url);
|
||||
if (TextUtils.isEmpty(url.trim())) {
|
||||
continue;
|
||||
}
|
||||
emitter.onNext(getOkHttpURL(url));
|
||||
} else if (url.startsWith("https://")) {
|
||||
String noHttps = url.substring(8);
|
||||
if (!baseURLList.contains(noHttps)) {
|
||||
baseURLList.add(noHttps);
|
||||
if (haveDomain(url)) {
|
||||
nohttpURLList.add("m." + getDomain(url));
|
||||
}
|
||||
if (!url.startsWith("http")) {
|
||||
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())
|
||||
.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)) {
|
||||
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: ");
|
||||
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);
|
||||
}
|
||||
});
|
||||
blackIPList.removeIf(TextUtils::isEmpty);
|
||||
HashSet<String> URLList = new HashSet<>(Arrays.asList(qch_webblack_url.trim().split(",")));
|
||||
for (String url : URLList) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
continue;
|
||||
}
|
||||
Log.e(TAG, "setBrowserBlackList: url: " + url);
|
||||
if (qch_webblack_url.startsWith("http://")) {
|
||||
blackList.add(url);
|
||||
blackList.add(url.replace("http://", "https://"));
|
||||
} else if (qch_webblack_url.startsWith("https://")) {
|
||||
blackList.add(url);
|
||||
blackList.add(url.replace("https://", "http://"));
|
||||
} else {
|
||||
blackList.add("http://" + url);
|
||||
blackList.add("https://" + url);
|
||||
}
|
||||
}
|
||||
blackList.addAll(blackIPList);
|
||||
blackList.removeIf(TextUtils::isEmpty);
|
||||
Log.e(TAG, "setBrowserBlackList: blackList: " + blackList);
|
||||
boolean write = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", String.join(",", blackList));
|
||||
Log.e(TAG, "setBrowserBlackList: write: " + write);
|
||||
}
|
||||
}
|
||||
|
||||
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()
|
||||
.url(URL)
|
||||
.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.
|
||||
* 通过url获取到域名
|
||||
|
||||
Reference in New Issue
Block a user