From 7f5f09b43bd434eff9fa6b07c57e3857fe79b5a8 Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Thu, 10 Jun 2021 09:54:37 +0800 Subject: [PATCH] =?UTF-8?q?version:2.1.1=20update:=E9=BB=91=E7=99=BD?= =?UTF-8?q?=E5=90=8D=E5=8D=95=E6=89=8B=E5=8A=A8=E6=B7=BB=E5=8A=A0http?= =?UTF-8?q?=E5=89=8D=E7=BC=80=EF=BC=8C=E7=99=BD=E5=90=8D=E5=8D=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20fix:=20add:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../myappstore/activity/MainPresenter.java | 19 +-- .../mjsheng/myappstore/bean/NewAppground.java | 5 + .../myappstore/network/HTTPInterface.java | 19 +-- .../mjsheng/myappstore/utils/JGYUtils.java | 15 +- .../mjsheng/myappstore/utils/URLUtils.java | 133 ++++++++++++++---- 6 files changed, 142 insertions(+), 53 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b059c26..f068fba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,9 +41,9 @@ android { //新平台正式 newly { flavorDimensions "default" - versionCode 510 + versionCode 511 //versionCode 1037 - versionName "2.1.0" + versionName "2.1.1" /*********************************极光推送************************************/ manifestPlaceholders = [ JPUSH_PKGNAME: "com.jiaoguanyi.appstore", diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java index efadd52..780c450 100644 --- a/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java +++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java @@ -29,12 +29,9 @@ import com.mjsheng.myappstore.bean.ForceDownloadBean; import com.mjsheng.myappstore.bean.ForceDownloadData; import com.mjsheng.myappstore.bean.LogoImg; import com.mjsheng.myappstore.bean.NetAndLaunchBean; -import com.mjsheng.myappstore.bean.NewAppground; -import com.mjsheng.myappstore.bean.SplitApks; import com.mjsheng.myappstore.bean.StudentsInfo; import com.mjsheng.myappstore.jpush.TagAliasOperatorHelper; import com.mjsheng.myappstore.manager.NetInterfaceManager; -import com.mjsheng.myappstore.network.api.newapi.UpdateDeviceInfoApi; import com.mjsheng.myappstore.server.MainService; import com.mjsheng.myappstore.utils.ApkUtils; import com.mjsheng.myappstore.utils.ForegroundAppUtil; @@ -117,24 +114,28 @@ public class MainPresenter implements MainContact.Presenter { String batch = studentsInfoBaseResponse.data.getBatch(); if (TextUtils.isEmpty(sno)) { mView.setNumberText("", View.GONE); + SPUtils.put(mContext, "sno", DEFAULT_INFO); } else { mView.setNumberText(sno, View.VISIBLE); SPUtils.put(mContext, "sno", sno); } if (TextUtils.isEmpty(realname)) { mView.setNameText("", View.GONE); + SPUtils.put(mContext, "realname", DEFAULT_INFO); } else { mView.setNameText(realname, View.VISIBLE); SPUtils.put(mContext, "realname", realname); } if (TextUtils.isEmpty(classes)) { mView.setClassText("", View.GONE); + SPUtils.put(mContext, "classes", DEFAULT_INFO); } else { mView.setClassText(classes, View.VISIBLE); SPUtils.put(mContext, "classes", classes); } if (TextUtils.isEmpty(batch)) { mView.setBatchText("", View.GONE); + SPUtils.put(mContext, "batch", DEFAULT_INFO); } else { mView.setBatchText(batch, View.VISIBLE); SPUtils.put(mContext, "batch", batch); @@ -1101,7 +1102,9 @@ public class MainPresenter implements MainContact.Presenter { @Override public void getBrowserWhiteList() { - new URLUtils(mContext).setBrowserList(); + new URLUtils(mContext).setBrowserWhiteList(); + new URLUtils(mContext).setBrowserBlackList(); + // try { // int qch_website_isBlackWebUrl = Settings.System.getInt(mContext.getContentResolver(), "qch_website_isBlackWebUrl"); // String BlackBrowserArray = Settings.System.getString(mContext.getContentResolver(), "BlackBrowserArray"); @@ -1266,11 +1269,11 @@ public class MainPresenter implements MainContact.Presenter { @Override public void setAppinsideWeb() { - if (JGYUtils.isOfficialVersion()) { +// if (JGYUtils.isOfficialVersion()) { getAppinsideWeb(); - } else { - getNewAppinsideWeb(); - } +// } else { +// getNewAppinsideWeb(); +// } } private void getAppinsideWeb() { diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java b/app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java index 5367e65..d218c5c 100644 --- a/app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java +++ b/app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java @@ -32,4 +32,9 @@ public class NewAppground implements Serializable { public void setType(int type) { this.type = type; } + + @Override + public String toString() { + return packages + "," + address; + } } diff --git a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java index d8ebecc..694c0be 100644 --- a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java +++ b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java @@ -526,30 +526,33 @@ public class HTTPInterface { white += "," + homePage; } boolean whiteList = Settings.System.putString(context.getContentResolver(), "DeselectBrowserArray", white); - new URLUtils(context).setBrowserList(); + new URLUtils(context).setBrowserWhiteList(); - Log.e("SystemSetting", "setBrowserList----white-----" + whiteList + ":" + white); + Log.e("setBrowserBlackList", "setBrowserList----white-----" + whiteList + ":" + white); } else { Settings.System.putString(context.getContentResolver(), "DeselectBrowserArray", " "); } String black = data.getString("black"); if (!TextUtils.isEmpty(black)) { boolean blackList = Settings.System.putString(context.getContentResolver(), "qch_webblack_url", black); - Log.e("SystemSetting", "setBrowserList----black-----" + blackList + ":" + black); + Log.e("setBrowserBlackList", "setBrowserList----black-----" + blackList + ":" + black); + new URLUtils(context).setBrowserBlackList(); } else { Settings.System.putString(context.getContentResolver(), "qch_webblack_url", " "); } } else { - Log.e("fht", "setBrowserList" + msg); + Log.e("setBrowserBlackList", "setBrowserList" + msg); } } catch (JSONException e) { - Log.e("fht", "setBrowserList" + e.getMessage()); + Log.e("setBrowserBlackList", "JSONException" + e.getMessage()); } + } @Override public void onError(Call call, Response response, Exception e) { super.onError(call, response, e); + Log.e(TAG, "onError: " + e.getMessage()); } }); } @@ -610,7 +613,7 @@ public class HTTPInterface { @Override public void onComplete() { Log.e("NewSetBrowserList", "onComplete: "); - new URLUtils(context).setBrowserList(); + new URLUtils(context).setBrowserWhiteList(); } }); } @@ -671,7 +674,7 @@ public class HTTPInterface { @Override public void onComplete() { - new URLUtils(context).setBrowserList(); + new URLUtils(context).setBrowserWhiteList(); Log.e("SetBrowserList", "onComplete: "); } }); @@ -830,7 +833,7 @@ public class HTTPInterface { if ("com.android.mms".equals(pack)) { pm.setApplicationEnabledSetting("com.android.messaging", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); } - }catch (Exception ex){ + } catch (Exception ex) { Log.e("setHideDesktopIcon", "Exception: ex: " + ex.getMessage()); } pm.setApplicationEnabledSetting(pack, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java index 6c3af7b..70fce5f 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java @@ -334,9 +334,8 @@ public class JGYUtils { } if (packageList.length() > 0) { //app内所有的网页禁止 - //packageList = packageList.substring(0, packageList.length() - 1); - //去掉多余的, - Log.e("setAppinsideWeb ", "packageList:" + packageList); + + Log.e("setAppinsideWeb ", "packageList:" + packageList.toString()); Intent qch_app_website = new Intent("qch_app_website") .setPackage("com.android.settings"); qch_app_website.putExtra("package_name", packageList.toString()); @@ -346,9 +345,8 @@ public class JGYUtils { } if (strings.length() > 0) { //app内单个网页地址禁止打开 - //strings = strings.substring(0, strings.length() - 1); - //去掉多余的; - Log.e("setAppinsideWeb ", "strings:" + strings); + + Log.e("setAppinsideWeb ", "strings:" + strings.toString()); Intent intent = new Intent("qch_app_inside_website") .setPackage("com.android.settings"); intent.putExtra("websitelist", strings.toString()); @@ -398,6 +396,7 @@ public class JGYUtils { } } } + // TODO: 2021/6/9 if (whiteList.length() > 0) { Intent intent = new Intent(); intent.setAction("黑名单key"); @@ -412,7 +411,7 @@ public class JGYUtils { //old if (packageList.length() > 0) { //app内所有的网页禁止 - Log.e("setAppinsideWeb ", "packageList:" + packageList); + Log.e("setAppinsideWeb ", "packageList:" + packageList.toString()); Intent qch_app_website = new Intent("qch_app_website") .setPackage("com.android.settings"); qch_app_website.putExtra("package_name", packageList.toString()); @@ -422,7 +421,7 @@ public class JGYUtils { } if (blackList.length() > 0) { //app内单个网页地址禁止打开 - Log.e("setAppinsideWeb ", "blackList:" + blackList); + Log.e("setAppinsideWeb ", "blackList:" + blackList.toString()); Intent intent = new Intent("qch_app_inside_website") .setPackage("com.android.settings"); intent.putExtra("websitelist", blackList.toString()); diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/URLUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/URLUtils.java index e9a2712..ab43b77 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/URLUtils.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/URLUtils.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -30,38 +31,71 @@ import okhttp3.Response; public class URLUtils { private static String TAG = URLUtils.class.getSimpleName(); private Context mContext; - private List baseURLList = new ArrayList<>(); + private HashSet baseURLList = new HashSet<>(); public URLUtils(Context context) { this.mContext = context; } - public void setBrowserList() { + public void setBrowserWhiteList() { String whiteList = Settings.System.getString(mContext.getContentResolver(), "DeselectBrowserArray"); if (TextUtils.isEmpty(whiteList)) { Log.e(TAG, "getBrowserWhiteList: " + "whiteList is empty"); } else { - List URLList = Arrays.asList(whiteList.split(",")); + Log.e(TAG, "getBrowserWhiteList: " + "whiteList is : " + whiteList); + HashSet URLList = new HashSet<>(Arrays.asList(whiteList.split(","))); Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter emitter) throws Exception { baseURLList.clear(); - baseURLList.addAll(URLList); for (String url : URLList) { - if (url.startsWith("http://")) { - String noHttp = url.substring(7); - if (!baseURLList.contains(noHttp)) { - baseURLList.add(noHttp); +// if (url.startsWith("http://")) { +// String noHttp = url.substring(7); +// if (!baseURLList.contains(noHttp)) { +// baseURLList.add(noHttp); +// } +// } else if (url.startsWith("https://")) { +// String noHttps = url.substring(8); +// if (!baseURLList.contains(noHttps)) { +// baseURLList.add(noHttps); +// } +// }else { +// } + baseURLList.add(url); + if (url.startsWith("www.")) {//前缀为www的顶级域名 + String nowww = url.substring(4); + baseURLList.add(nowww); + baseURLList.add("http://" + nowww); + emitter.onNext(getOkHttpURL("http://" + nowww)); + baseURLList.add("https://" + nowww); + emitter.onNext(getOkHttpURL("https://" + nowww)); + Log.e(TAG, "subscribe: nowww: " + nowww); + baseURLList.add("http://" + url); + emitter.onNext(getOkHttpURL("http://" + url)); + baseURLList.add("https://" + url); + emitter.onNext(getOkHttpURL("https://" + url)); + } else if (getCount(url, ".") == 1) {//不带www的顶级域名 + baseURLList.add("http://www." + url); + emitter.onNext(getOkHttpURL("http://www." + url)); + baseURLList.add("https://www." + url); + emitter.onNext(getOkHttpURL("https://www." + url)); + baseURLList.add("http://" + url); + emitter.onNext(getOkHttpURL("http://" + url)); + baseURLList.add("https://" + url); + emitter.onNext(getOkHttpURL("https://" + url)); + } else if (!url.startsWith("http://") && !url.startsWith("https://")) {//没有前缀的网址 + baseURLList.add("http://" + url); + emitter.onNext(getOkHttpURL("http://" + url)); + baseURLList.add("https://" + url); + emitter.onNext(getOkHttpURL("https://" + url)); + } else { + baseURLList.add(url); + if (!TextUtils.isEmpty(url)) { + emitter.onNext(getOkHttpURL(url)); } } - if (url.startsWith("https://")) { - String noHttps = url.substring(8); - if (!baseURLList.contains(noHttps)) { - baseURLList.add(noHttps); - } - } - emitter.onNext(getOkHttpURL(url)); Log.e(TAG, "subscribe: " + url); +// emitter.onNext(getOkHttpURL(url)); } emitter.onComplete(); } @@ -76,33 +110,27 @@ public class URLUtils { @Override public void onNext(String s) { Log.e(TAG, "onNext: " + s); - if (!baseURLList.contains(s)) { - baseURLList.add(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); - } + 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); - } + baseURLList.add(noHttps); } } @Override public void onError(Throwable e) { - + Log.e(TAG, "onError: " + e.getMessage()); } @Override public void onComplete() { - Log.e(TAG, "onComplete: "); + Log.e(TAG, "onComplete: " + baseURLList); StringBuilder stringBuilder = new StringBuilder(); for (String s : baseURLList) { if (stringBuilder.length() > 0) { @@ -111,8 +139,8 @@ public class URLUtils { stringBuilder.append(s); } String DeselectBrowserArray = stringBuilder.toString(); - boolean write = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", DeselectBrowserArray); Log.e(TAG, "onComplete: " + "white list: " + DeselectBrowserArray); + boolean write = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", DeselectBrowserArray); Log.e(TAG, "onComplete: " + "write :" + write); } }); @@ -120,7 +148,45 @@ public class URLUtils { } + + private HashSet blackList = new HashSet<>(); + + public void setBrowserBlackList() { + String qch_webblack_url = Settings.System.getString(mContext.getContentResolver(), "qch_webblack_url"); + Log.e(TAG, "setBrowserBlackList: " + qch_webblack_url); + if (TextUtils.isEmpty(qch_webblack_url.trim())) { + return; + } + HashSet URLList = new HashSet<>(Arrays.asList(qch_webblack_url.split(","))); + for (String url : URLList) { + 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); + } + } + StringBuilder stringBuilder = new StringBuilder(); + for (String url : blackList) { + if (stringBuilder.length() > 0) { + stringBuilder.append(","); + } + stringBuilder.append(url); + } + Log.e(TAG, "setBrowserBlackList: blackList: " + blackList); + boolean write = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", stringBuilder.toString()); + Log.e(TAG, "setBrowserBlackList: write: " + write); + } + private String getOkHttpURL(String URL) { + if (!URL.startsWith("http")) { + return ""; + } OkHttpClient okHttpClient = new OkHttpClient(); final Request request = new Request.Builder() .url(URL) @@ -225,4 +291,17 @@ public class URLUtils { } return sb.toString(); } + + public int getCount(String str, String key) { + if (str == null || key == null || "".equals(str.trim()) || "".equals(key.trim())) { + return 0; + } + int count = 0; + int index = 0; + while ((index = str.indexOf(key, index)) != -1) { + index = index + key.length(); + count++; + } + return count; + } }