version:1.8.5

date:2021-12-03 15:42:13
fix:
add:准备移植到老人平板项目
This commit is contained in:
2021-12-03 15:43:25 +08:00
parent d69ed39e22
commit 88f65afb48
21 changed files with 655 additions and 293 deletions

View File

@@ -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");
}

View File

@@ -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();
}
}

View File

@@ -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: ");
}
});
}
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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();
}
}

View File

@@ -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())

View File

@@ -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: ");
}
});
}

View File

@@ -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
);
}

View File

@@ -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
);
}

View File

@@ -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);

View File

@@ -404,6 +404,11 @@ public class MainService extends Service implements MainContact.MainView, Networ
@Override
public void setTimeControl() {
mPresenter.getScreenLock();
}
@Override
public void setScreenLock() {
}
}

View File

@@ -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);
}

View File

@@ -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", "未连接");
}

View File

@@ -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);
}
}

View File

@@ -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获取到域名