diff --git a/app/build.gradle b/app/build.gradle
index 1406580..2096d6c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -41,9 +41,9 @@ android {
//新平台正式
newly {
flavorDimensions "default"
- versionCode 513
+ versionCode 514
//versionCode 1037
- versionName "2.1.2"
+ versionName "2.1.4"
/*********************************极光推送************************************/
manifestPlaceholders = [
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
@@ -60,8 +60,8 @@ android {
//新平台测试
beta {
flavorDimensions "default"
- versionCode 174
- versionName "1.7.4"
+ versionCode 513
+ versionName "2.1.3"
/*********************************极光推送************************************/
manifestPlaceholders = [
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
@@ -130,6 +130,15 @@ android {
v2SigningEnabled true
}
+ zhanRuiUserdebug {
+ storeFile file("keystore/zhanxunUserdebug.keystore")
+ storePassword "123456"
+ keyAlias "zhanxunUserdebug"
+ keyPassword "123456"
+ v1SigningEnabled true
+ v2SigningEnabled true
+ }
+
debug {
storeFile file("keystore/xueshibaoos.jks")
storePassword "123456"
@@ -147,7 +156,6 @@ android {
v1SigningEnabled true
v2SigningEnabled false
}
-
}
// Disable release builds for now
@@ -186,6 +194,18 @@ android {
signingConfig signingConfigs.zhanRui
}
+ //userdebug rom使用这个版本
+ zhanRuiUserdebug.initWith(zhanRuiDebug)
+ zhanRuiUserdebug {
+ manifestPlaceholders = [
+ AMAP_KEY: "546eb5646a65ac6a5b7d1c7456466e05"
+ ]
+ versionNameSuffix "-debug"
+ buildConfigField "String", "platform", '"ZhanRui"'
+ debuggable true
+ signingConfig signingConfigs.zhanRuiUserdebug
+ }
+
debug {
buildConfigField "String", "platform", '"MTK"'
manifestPlaceholders = [
diff --git a/app/keystore/zhanxunUserdebug.keystore b/app/keystore/zhanxunUserdebug.keystore
new file mode 100644
index 0000000..6d8f9ee
Binary files /dev/null and b/app/keystore/zhanxunUserdebug.keystore differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f134e2a..57d3e05 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,10 +56,13 @@
android:maxSdkVersion="22" />
+ android:maxSdkVersion="23" />
+
-
-
+
+
+
+
@@ -72,8 +75,10 @@
-
-
+
+
+
+
@@ -364,7 +369,8 @@
android:value="developer-default" />
+ android:value="${JPUSH_APPKEY}" />
+
() {
@Override
public void onSubscribe(Disposable d) {
- Log.e("getForceDownload", "forceDownloadApi---onSubscribe");
+// Log.e("getForceDownload", "forceDownloadApi---onSubscribe");
}
@@ -1221,7 +1220,7 @@ public class DiscardActivity extends AppCompatActivity {
public void onNext(ForceDownloadBean forceDownloadBean) {
switch (forceDownloadBean.getCode()) {
case 200:
- Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
+// Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
BaseApplication.getInstance().checkIsDownloading();
if (!BaseApplication.getInstance().isDownloading()) {
Aria.download(this).removeAllTask(true);
@@ -1236,22 +1235,22 @@ public class DiscardActivity extends AppCompatActivity {
break;
case -200:
boolean qch_force_app = Settings.System.putString(DiscardActivity.this.getContentResolver(), "qch_force_app", "invalid");
- Log.e("fht", "qch_force_app:" + qch_force_app);
+// Log.e("fht", "qch_force_app:" + qch_force_app);
break;
default:
- Log.e("getForceDownload", forceDownloadBean.getMsg());
+// Log.e("getForceDownload", forceDownloadBean.getMsg());
break;
}
}
@Override
public void onError(Throwable e) {
- Log.e("getForceDownload", "forceDownloadApi=onError:");
+// Log.e("getForceDownload", "forceDownloadApi=onError:");
}
@Override
public void onComplete() {
- Log.e("getForceDownload", "forceDownloadApi---onComplete");
+// Log.e("getForceDownload", "forceDownloadApi---onComplete");
}
});
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
index 0719e79..8420543 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
@@ -364,6 +364,11 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
@Override
public void setSystemSettingFinished() {
+ mPresenter.getROMApp();
+ }
+
+ @Override
+ public void getROMAppFinished() {
mPresenter.getDeveloper();
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java
index 7f0f888..99e908b 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java
@@ -61,6 +61,8 @@ public class MainContact {
void setAppinsideWebFinished();
//获取系统其他管控设置结束
void setSystemSettingFinished();
+ //获取自定义版本内置app
+ void getROMAppFinished();
//获取开发者选项结束
void getDeveloperFinished();
//设置开机动画
@@ -128,6 +130,8 @@ public class MainContact {
void setAppinsideWeb();
//获取系统其他管控设置
void setSystemSetting();
+ //获取自定义版本内置app
+ void getROMApp();
//获取开发者选项
void getDeveloper();
//设置开机动画
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 1b7ec84..5d963cb 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java
@@ -215,6 +215,7 @@ public class MainPresenter implements MainContact.Presenter {
int oldState = Settings.System.getInt(mContext.getContentResolver(), "qch_unlock_ipad", 0);
Log.e("getLockedState", "qch_unlock_ipad: " + oldState);
//后台1是锁定,底层0是锁定
+ SPUtils.put(mContext, "first_connect", 1);
if (locked == 1) {
if (oldState == 1) {
Log.e("getLockedState", "onNext: " + "state changed , reset devices");
@@ -222,7 +223,6 @@ public class MainPresenter implements MainContact.Presenter {
}
Settings.System.putInt(mContext.getContentResolver(), "qch_unlock_ipad", 0);
} else {
- SPUtils.put(mContext, "first_connect", 1);
// SysSettingUtils.setEnableSetting(mContext);
Settings.System.putInt(mContext.getContentResolver(), "qch_unlock_ipad", 1);
}
@@ -688,6 +688,7 @@ public class MainPresenter implements MainContact.Presenter {
boolean write = Settings.System.putString(mContext.getContentResolver(), "only_jgy_shortcut_list", "");
Log.e(TAG, "onNext: only_jgy_shortcut_list: " + write);
Log.e("getAppLimit", "onNext: " + bodyString);
+ mView.getAppLimitFinished("");
}
} catch (IOException e) {
e.printStackTrace();
@@ -712,11 +713,12 @@ public class MainPresenter implements MainContact.Presenter {
@Override
public void getDeviceBatch(String packageList) {
- if (JGYUtils.isOfficialVersion()) {
+ if (JGYUtils.isOfficialVersion() || TextUtils.isEmpty(packageList)) {
mView.getDeviceBatchFinished();
return;
}
int locked = Settings.System.getInt(mContext.getContentResolver(), "qch_unlock_ipad", 0);
+ Log.e(TAG, "getDeviceBatch: " + locked);
if (locked == 0) {
// NetInterfaceManager.getInstance()
// .getBatchObservable()
@@ -1290,72 +1292,14 @@ public class MainPresenter implements MainContact.Presenter {
@Override
public void setAppinsideWeb() {
-// if (JGYUtils.isOfficialVersion()) {
- getAppinsideWeb();
-// } else {
-// getNewAppinsideWeb();
-// }
+ HTTPInterface.getAppinsideWeb(mContext, new HTTPInterface.GetAppinsideWebCallback() {
+ @Override
+ public void ononComplete() {
+ mView.setAppinsideWebFinished();
+ }
+ });
}
- private void getAppinsideWeb() {
- NetInterfaceManager.getInstance()
- .getAppinsideWebObservable()
- .observeOn(Schedulers.io())
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("setAppinsideWeb", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse> listBaseResponse) {
- Log.e("setAppinsideWeb", "onNext: ");
- JGYUtils.getInstance().setAppinsideWeb(listBaseResponse);
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("setAppinsideWeb", "onError: " + e.getMessage());
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("setAppinsideWeb", "onComplete: ");
- mView.setAppinsideWebFinished();
- }
- });
- }
-
- private void getNewAppinsideWeb() {
- NetInterfaceManager.getInstance()
- .getNewAppinsideWebObservable()
- .observeOn(Schedulers.io())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getNewAppinsideWeb", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse listBaseResponse) {
- Log.e("getNewAppinsideWeb", "onNext: ");
- JGYUtils.getInstance().setNewAppinsideWeb(listBaseResponse);
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getNewAppinsideWeb", "onError: " + e.getMessage());
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getNewAppinsideWeb", "onComplete: ");
- mView.setAppinsideWebFinished();
- }
- });
- }
@Override
public void setSystemSetting() {
@@ -1414,6 +1358,48 @@ public class MainPresenter implements MainContact.Presenter {
}
+ @Override
+ public void getROMApp() {
+ String customVersion = Utils.getCustomVersion();
+ Log.e(TAG, "getROMApp: " + customVersion);
+ NetInterfaceManager.getInstance().getCustomROMAppApi()
+ .getROMApp(NetInterfaceManager.HTTP_KEY, customVersion)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("getROMApp", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(BaseResponse baseResponse) {
+ Log.e("getROMApp", "onNext: " + baseResponse);
+ if (baseResponse.code == OK) {
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(baseResponse.data)).getAsJsonObject();
+ String packageName = jsonObject.get("package_name").getAsString();
+ Settings.System.putString(mContext.getContentResolver(), "jgy_customromapp", packageName);
+ } else {
+ Log.e("getROMApp", "onNext: " + baseResponse.msg);
+ Settings.System.putString(mContext.getContentResolver(), "jgy_customromapp", "");
+ onComplete();
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("getROMApp", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getROMApp", "onComplete: ");
+ mView.getROMAppFinished();
+ }
+ });
+ }
+
@Override
public void getDeveloper() {
NetInterfaceManager.getInstance().getDeveloperControl()
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java b/app/src/main/java/com/mjsheng/myappstore/bean/TTAppground.java
similarity index 57%
rename from app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java
rename to app/src/main/java/com/mjsheng/myappstore/bean/TTAppground.java
index d218c5c..949ffa5 100644
--- a/app/src/main/java/com/mjsheng/myappstore/bean/NewAppground.java
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/TTAppground.java
@@ -1,8 +1,10 @@
package com.mjsheng.myappstore.bean;
+import androidx.annotation.Nullable;
+
import java.io.Serializable;
-public class NewAppground implements Serializable {
+public class TTAppground implements Serializable {
private static final long serialVersionUID = -2071117846816082338L;
private String packages;
private String address;
@@ -37,4 +39,20 @@ public class NewAppground implements Serializable {
public String toString() {
return packages + "," + address;
}
+
+ @Override
+ public boolean equals(@Nullable Object obj) {
+ if (obj instanceof TTAppground) {
+ TTAppground appground = (TTAppground) obj;
+ return packages.equalsIgnoreCase(appground.getPackages())
+ && address.equalsIgnoreCase(appground.getAddress())
+ && type == appground.getType();
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java b/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java
index d5fe03e..1fa5e88 100644
--- a/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java
+++ b/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java
@@ -12,7 +12,6 @@ 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.StudentsInfo;
import com.mjsheng.myappstore.network.api.AppLimitApi;
import com.mjsheng.myappstore.network.api.BrankPicApi;
@@ -30,6 +29,7 @@ import com.mjsheng.myappstore.network.api.newapi.BrowserBookmarksApi;
import com.mjsheng.myappstore.network.api.newapi.BrowserListApi;
import com.mjsheng.myappstore.network.api.newapi.CheckTestUpdateApi;
import com.mjsheng.myappstore.network.api.newapi.CheckUpdateApi;
+import com.mjsheng.myappstore.network.api.newapi.CustomROMApp;
import com.mjsheng.myappstore.network.api.newapi.DesktopIconApi;
import com.mjsheng.myappstore.network.api.newapi.DevicesLockedStateApi;
import com.mjsheng.myappstore.network.api.newapi.GetBatchApi;
@@ -177,7 +177,6 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
-
public Observable> getBrowserListSettingObservable() {
return mRetrofit
.create(BrowserListApi.class)
@@ -313,6 +312,7 @@ public class NetInterfaceManager {
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
+
public Observable getDeveloperControl() {
return mRetrofit.create(GetDeveloper.class)
.getDeveloperState(Utils.getSerial())
@@ -320,8 +320,6 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
-
-
/*
*
* API
@@ -399,4 +397,8 @@ public class NetInterfaceManager {
.create(CheckUpdateApi.class);
}
+ public CustomROMApp getCustomROMAppApi() {
+ return mRetrofit.create(CustomROMApp.class);
+ }
+
}
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 a53c87e..9d0f72a 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
@@ -411,77 +411,81 @@ public class HTTPInterface {
});
}
+ public interface GetAppinsideWebCallback {
+ void ononComplete();
+ }
- synchronized public static void setAppinsideWeb(final Context context) {
- OkGo.post(URLAddress.SET_APPINSIDEWEB)
- .params("key", NetInterfaceManager.HTTP_KEY)
- .params("sn", Utils.getSerial())
- .execute(new StringCallback() {
+ synchronized public static void getAppinsideWeb(Context context, GetAppinsideWebCallback callback) {
+ if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTKPlatform) {
+ setAppinsideWeb(callback);
+ }else {
+ setNewAppinsideWeb(callback);
+ }
+ }
+
+ private static void setAppinsideWeb(GetAppinsideWebCallback callback) {
+ NetInterfaceManager.getInstance()
+ .getAppinsideWebObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer>>() {
@Override
- public void onSuccess(String s, Call call, Response response) {
- try {
- JSONObject jsonObject = JSON.parseObject(s);
- int code = jsonObject.getInteger("code");
- String msg = jsonObject.getString("msg");
- if (code == 200) {
- String data = jsonObject.getString("data");
- List appgrounds = JSON.parseArray(data, Appground.class);
- if (appgrounds != null && appgrounds.size() > 0) {
- String strings = "";
- String packageList = "";//单条管控名单
- for (Appground appground : appgrounds) {
- if (appground.getAddress().equals("")) {
- packageList += appground.getPackages() + ",";
- } else {
- strings += appground.toString() + ";";
- }
- }
- if (packageList.length() > 0) {
- //app内所有的网页禁止
-// packageList = packageList.substring(0, packageList.length() - 1);
- //去掉多余的,
- Log.e("setAppinsideWeb ", "packageList:" + packageList);
- Intent qch_app_website = new Intent("qch_app_website")
- .setPackage("com.android.settings");
- qch_app_website.putExtra("package_name", packageList);
- context.sendBroadcast(qch_app_website);
- } else {
- sendAllweb(context);
- }
- if (strings.length() > 0) {
- //app内单个网页地址禁止打开
-// strings = strings.substring(0, strings.length() - 1);
- //去掉多余的;
- Log.e("setAppinsideWeb ", "strings:" + strings);
- Intent intent = new Intent("qch_app_inside_website")
- .setPackage("com.android.settings");
- intent.putExtra("websitelist", strings);
- context.sendBroadcast(intent);
- } else {
- sendwebUrl(context);
- }
- }
- } else if (code == 400) {
- //列表为空的情况
- sendAllweb(context);
- sendwebUrl(context);
-// ToastUtil.show(msg);
- Log.e("fht", "setAppinsideWeb" + msg);
- }
- } catch (Exception e) {
- Log.e("setAppinsideWeb", e.getMessage());
-// ToastUtil.show("数据错误");
- }
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("setAppinsideWeb", "onSubscribe: ");
}
@Override
- public void onError(Call call, Response response, Exception e) {
- super.onError(call, response, e);
-// ToastUtil.show("网络连接失败");
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("setAppinsideWeb", "onNext: " + listBaseResponse);
+ JGYUtils.getInstance().setAppinsideWeb(listBaseResponse);
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("setAppinsideWeb", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("setAppinsideWeb", "onComplete: ");
+ callback.ononComplete();
}
});
}
+ private static void setNewAppinsideWeb(GetAppinsideWebCallback callback) {
+ NetInterfaceManager.getInstance()
+ .getNewAppinsideWebObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getNewAppinsideWeb", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse listBaseResponse) {
+ Log.e("getNewAppinsideWeb", "onNext: " + listBaseResponse);
+ long time1 = System.currentTimeMillis();
+ JGYUtils.getInstance().setNewAppinsideWeb(listBaseResponse);
+ Log.e(TAG, "setWhiteApp: time = " + (System.currentTimeMillis() - time1));
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getNewAppinsideWeb", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getNewAppinsideWeb", "onComplete: ");
+ callback.ononComplete();
+ }
+ });
+ }
+
+
private static void sendAllweb(Context context) {
Intent intent = new Intent("qch_app_website")
.setPackage("com.android.settings");
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java b/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java
index ccca553..f035fed 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java
@@ -60,5 +60,7 @@ public class URLAddress {
public final static String GET_LOGO_IMG = HTTP_TAG_HEAD_NEW + "Sn/getLogoImg";
//开发人员选项开关
public final static String GET_DEVELOPER = HTTP_TAG_HEAD_NEW + "Sn/getDeveloper";
+ //通过固件名获取内置应用
+ public final static String GET_ROM_APP = HTTP_TAG_HEAD_NEW + "And/getFirmwareApp";
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CustomROMApp.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CustomROMApp.java
new file mode 100644
index 0000000..12a8ea5
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CustomROMApp.java
@@ -0,0 +1,18 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface CustomROMApp {
+ @FormUrlEncoded
+ @POST(URLAddress.GET_ROM_APP)
+ Observable getROMApp(
+ @Field("key") String key,
+ @Field("version_number") String version_number
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/NewAppinsideWebApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/NewAppinsideWebApi.java
index 09df26e..51350f2 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/NewAppinsideWebApi.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/NewAppinsideWebApi.java
@@ -2,11 +2,8 @@ package com.mjsheng.myappstore.network.api.newapi;
import com.mjsheng.myappstore.bean.BaseResponse;
-import com.mjsheng.myappstore.bean.NewAppground;
import com.mjsheng.myappstore.network.URLAddress;
-import java.util.List;
-
import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
index 3b028e8..6ccd5b8 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
@@ -11,6 +11,8 @@ import com.mjsheng.myappstore.server.GuardService;
import com.mjsheng.myappstore.server.LogcatService;
import com.mjsheng.myappstore.server.MainService;
import com.mjsheng.myappstore.server.StepService;
+import com.mjsheng.myappstore.utils.JGYUtils;
+import com.mjsheng.myappstore.utils.SPUtils;
public class BootReceiver extends BroadcastReceiver {
private String TAG = BootReceiver.class.getSimpleName() + ":myappstore";
@@ -28,6 +30,7 @@ public class BootReceiver extends BroadcastReceiver {
Settings.System.putString(context.getContentResolver(), "qch_launcher_icon_app", "");
}
startService(context);
+ SPUtils.put(context, JGYUtils.JGY_APPINSIDE_FIRST_WRITE,0);
break;
case BOOT_COMPLETED:
case Intent.ACTION_BATTERY_CHANGED:
diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
index aab2c1d..cd9cbfa 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
@@ -1068,7 +1068,13 @@ public class MyJPushReceiver extends BroadcastReceiver {
private void setAPPinsideWebsite(String s) {
//禁止app内部网页访问,包名用,隔开
- HTTPInterface.setAppinsideWeb(mContext);//app内部网页管控
+ HTTPInterface.getAppinsideWeb(mContext, new HTTPInterface.GetAppinsideWebCallback() {
+ @Override
+ public void ononComplete() {
+ Log.e(TAG, "ononComplete: setAPPinsideWebsite");
+ }
+ });//app内部网页管控
+
// if (TextUtils.isEmpty(s)) {
// Log.e(TAG, "setAPPinsideWebsite extras is null");
//
diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
index 0ce12cb..a6b32c6 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
@@ -49,16 +49,16 @@ public class NewAppReceiver extends BroadcastReceiver {
String packageName = intent.getDataString().replace("package:", "");
switch (action) {
case Intent.ACTION_PACKAGE_ADDED:
- state = "安装了";
+ state = "安装了:";
break;
case Intent.ACTION_PACKAGE_REPLACED:
- state = "重装了";
+ state = "重装了:";
break;
case Intent.ACTION_PACKAGE_REMOVED:
- state = "卸载了";
+ state = "卸载了:";
break;
default:
- state = "未知";
+ state = "未知:";
break;
}
Log.e(TAG, "sendAppInfo: " + state + packageName);
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java b/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java
index 762f086..f566015 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java
@@ -61,7 +61,6 @@ import com.mjsheng.myappstore.utils.ForegroundAppUtil;
import com.mjsheng.myappstore.utils.MySQLData;
import com.mjsheng.myappstore.utils.SPUtils;
import com.mjsheng.myappstore.utils.SaveListUtils;
-import com.mjsheng.myappstore.utils.SysSettingUtils;
import com.mjsheng.myappstore.utils.TimeUtils;
import com.mjsheng.myappstore.utils.Utils;
@@ -812,7 +811,7 @@ public class DiscardServer extends Service {
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
- Log.e("getForceDownload", "forceDownloadApi---onSubscribe");
+// Log.e("getForceDownload", "forceDownloadApi---onSubscribe");
}
@@ -820,7 +819,7 @@ public class DiscardServer extends Service {
public void onNext(ForceDownloadBean forceDownloadBean) {
switch (forceDownloadBean.getCode()) {
case 200:
- Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
+// Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
BaseApplication.getInstance().checkIsDownloading();
if (!BaseApplication.getInstance().isDownloading()) {
Aria.download(this).removeAllTask(true);
@@ -835,10 +834,10 @@ public class DiscardServer extends Service {
break;
case -200:
boolean qch_force_app = Settings.System.putString(getContentResolver(), "qch_force_app", "invalid");
- Log.e("getForceDownload", "qch_force_app:" + qch_force_app);
+// Log.e("getForceDownload", "qch_force_app:" + qch_force_app);
break;
default:
- Log.e("getForceDownload", forceDownloadBean.getMsg());
+// Log.e("getForceDownload", forceDownloadBean.getMsg());
break;
}
}
@@ -1185,7 +1184,7 @@ public class DiscardServer extends Service {
HTTPInterface.setJpushTags(DiscardServer.this);
sendMACaddress();
HTTPInterface.setBrowserBlackList(DiscardServer.this);//浏览器网址管控
- HTTPInterface.setAppinsideWeb(DiscardServer.this);//app内部网页管控
+// HTTPInterface.getAppinsideWeb(DiscardServer.this);//app内部网页管控
HTTPInterface.setHomepagtag(DiscardServer.this);//设置主页和标签
HTTPInterface.setHideDesktopIcon(DiscardServer.this);//设置桌面图标隐藏
// getAppLimitApi();//获取可以写入的app包名
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/MainService.java b/app/src/main/java/com/mjsheng/myappstore/server/MainService.java
index 49fd078..aafcda6 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/MainService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/MainService.java
@@ -139,7 +139,7 @@ public class MainService extends Service implements MainContact.MainView {
public int onStartCommand(Intent intent, int flags, int startId) {
JPushInterface.init(this);
if (MainActivity.isForeground) {
- Log.e(TAG, "onStartCommand: MainActivity: isForeground: " + MainActivity.isForeground);
+ Log.e(TAG, "onStartCommand: MainService: isForeground: " + MainActivity.isForeground);
} else {
// if (((SystemClock.elapsedRealtime() - startCommandTime) < 60000) && startCommandTime != 0) {
// Log.e(TAG, "onStartCommand: " + "启动时间过短");
@@ -394,12 +394,15 @@ public class MainService extends Service implements MainContact.MainView {
installApkByPackage(filePath, packageName);
} else if (!TextUtils.isEmpty(filePath)) {
String pkg = ApkUtils.getPackageName(MainService.this, filePath);
- Log.e(TAG, "onReceive: " + "pkg: " + pkg + "\tfilePath: " + filePath);
- installApkByPackage(filePath, pkg);
+ if (TextUtils.isEmpty(pkg)) {
+ Log.e(TAG, "onReceive: " + "unknow packageName");
+ } else {
+ Log.e(TAG, "onReceive: " + "pkg: " + pkg + "\tfilePath: " + filePath);
+ installApkByPackage(filePath, pkg);
+ }
} else {
Log.e(TAG, "onReceive: " + "no filePath and packageName");
}
-
}
}
@@ -411,11 +414,11 @@ public class MainService extends Service implements MainContact.MainView {
synchronized private void installApkByPackage(String filePath, String pkg) {
String oldListString = Settings.System.getString(getContentResolver(), "qch_app_forbid");
HashSet packageList = new HashSet<>(Arrays.asList(oldListString.split(",")));
- packageList.add(pkg);
- String join = String.join(",", packageList);
- Log.e(TAG, "installApkByPackage: " + join);
- Settings.System.putString(getContentResolver(), "qch_app_forbid", join);
- ApkUtils.installApp(MainService.this, filePath);
+ if (!packageList.contains(pkg)) {
+ Log.e(TAG, "installApkByPackage: " + "packageName: " + pkg + " not in whitelist");
+ } else {
+ ApkUtils.installApp(MainService.this, filePath);
+ }
}
@Override
@@ -441,18 +444,19 @@ public class MainService extends Service implements MainContact.MainView {
@Override
public void setLockedState(boolean loocked) {
if (loocked) {
+ Log.e(TAG, "setLockedState: " + netWorkIsRunning);
//上传APP信息
ApkUtils.getAppInfo(this);
- if (netWorkIsRunning) {
- //如果正在执行,不执行
- return;
- }
//发送设备mac地址和信息
mPresenter.sendMACAddress();
//设置极光推送别名
mPresenter.setJpushAlias();
//设置极光推送标签
SaveListUtils.getList();
+ if (netWorkIsRunning) {
+ //如果正在执行,不执行
+// return;
+ }
//获取系统管控
mPresenter.getSystemSettingbegin();
netWorkIsRunning = true;
@@ -469,7 +473,7 @@ public class MainService extends Service implements MainContact.MainView {
*/
@Override
public void setFirstConnect(boolean state) {
- Log.e(TAG, "isFirstConnect: " + "end request");
+ Log.e(TAG, "isFirstConnect: " + "end request: " + state);
if (state) {
mPresenter.setDisableSetting();
} else {
@@ -576,6 +580,11 @@ public class MainService extends Service implements MainContact.MainView {
@Override
public void setSystemSettingFinished() {
+ mPresenter.getROMApp();
+ }
+
+ @Override
+ public void getROMAppFinished() {
mPresenter.getDeveloper();
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
index ceb3203..9693b7f 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
@@ -49,7 +49,9 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -1088,14 +1090,23 @@ public class ApkUtils {
}
Log.e("addShortcut", "addShortcut: " + result);
String[] stringList = result.split(",");
- List packages = new ArrayList<>(Arrays.asList(stringList));
+ HashSet packages = new HashSet<>(Arrays.asList(stringList));
+ String romapps = Settings.System.getString(context.getContentResolver(), "jgy_customromapp");
+ Log.e(TAG, "addShortcut: romapps: " + romapps);
+ HashSet appSet = new HashSet<>();
+ if (!TextUtils.isEmpty(romapps)) {
+ appSet = new HashSet<>(Arrays.asList(romapps.split(",")));
+ packages.addAll(appSet);
+ }
StringBuilder installedListBuilder = new StringBuilder();
for (String s : packages) {
if ("com.jiaoguanyi.store".equals(s) || "com.jiaoguanyi.appstore".equals(s)) {
continue;
}
if (ApkUtils.isSystemApp(context, s)) {
- continue;
+ if (!appSet.contains(s)) {
+ continue;
+ }
}
if (!ApkUtils.isAvailable(context, s)) {
continue;
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 82296dd..93a780b 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java
@@ -26,7 +26,9 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.FileUtils;
import com.blankj.utilcode.util.PathUtils;
+import com.google.gson.Gson;
import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.base.BaseApplication;
import com.mjsheng.myappstore.bean.Appground;
@@ -34,7 +36,7 @@ import com.mjsheng.myappstore.bean.BaseResponse;
import com.mjsheng.myappstore.bean.ForceDownloadData;
import com.mjsheng.myappstore.bean.NetAndLaunchBean;
import com.mjsheng.myappstore.bean.NetAndLaunchData;
-import com.mjsheng.myappstore.bean.NewAppground;
+import com.mjsheng.myappstore.bean.TTAppground;
import com.mjsheng.myappstore.comm.CommonDatas;
import java.io.File;
@@ -43,6 +45,7 @@ import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.Type;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -52,6 +55,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
@@ -313,7 +317,7 @@ public class JGYUtils {
}
- public void setAppinsideWeb(BaseResponse> response) {
+ synchronized public void setAppinsideWeb(BaseResponse> response) {
if (response.code == 200) {
List appgrounds = response.data;
if (appgrounds != null && appgrounds.size() > 0) {
@@ -364,73 +368,25 @@ public class JGYUtils {
}
}
- public void setNewAppinsideWeb(BaseResponse response) {
+ /**
+ * @param response 黑白名单都可以管控
+ */
+ synchronized public void setNewAppinsideWeb(BaseResponse response) {
if (response.code == 200) {
String jsonString = JSONArray.toJSONString(response.data);
- List appgrounds = JSONObject.parseArray(jsonString, NewAppground.class);
- StringBuilder whiteList = new StringBuilder();
- StringBuilder blackList = new StringBuilder();
- StringBuilder packageList = new StringBuilder();//单条管控名单
+ List appgrounds = JSONObject.parseArray(jsonString, TTAppground.class);
+ List whiteApp = new ArrayList<>();
+ List blackApp = new ArrayList<>();
if (appgrounds != null && appgrounds.size() > 0) {
- for (NewAppground appground : appgrounds) {
+ for (TTAppground appground : appgrounds) {
if (appground.getType() == 1) {
- if (TextUtils.isEmpty(appground.getAddress())) {
- return;
- } else {
- if (whiteList.length() > 0) {
- whiteList.append(",");
- }
- whiteList.append(appground.getAddress());
- }
+ whiteApp.add(appground);
} else {
- if (TextUtils.isEmpty(appground.getAddress())) {
- if (packageList.length() > 0) {
- packageList.append(",");
- }
- packageList.append(appground.getPackages());
- } else {
- if (blackList.length() > 0) {
- blackList.append(";");
- }
- blackList.append(appground.toString());
- }
+ blackApp.add(appground);
}
}
- // TODO: 2021/6/9
- if (whiteList.length() > 0) {
- Intent intent = new Intent();
- intent.setAction("黑名单key");
- intent.putExtra("package_name", "应用包名");
- intent.setPackage("com.android.settings");
- mContext.sendBroadcast(intent);
- android.provider.Settings.System.putString(mContext.getContentResolver(), "黑名单网址key", "黑名单网址");
- } else {
-
- }
-
- //old
- if (packageList.length() > 0) {
- //app内所有的网页禁止
- 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());
- mContext.sendBroadcast(qch_app_website);
- } else {
- sendAllweb(mContext);
- }
- if (blackList.length() > 0) {
- //app内单个网页地址禁止打开
- Log.e("setAppinsideWeb ", "blackList:" + blackList.toString());
- Intent intent = new Intent("qch_app_inside_website")
- .setPackage("com.android.settings");
- intent.putExtra("websitelist", blackList.toString());
- mContext.sendBroadcast(intent);
- } else {
- sendwebUrl(mContext);
- }
-
-
+ setWhiteApp(whiteApp);
+ setBlackApp(blackApp);
}
} else if (response.code == 400) {
//列表为空的情况
@@ -439,24 +395,258 @@ public class JGYUtils {
//ToastUtil.show(msg);
Log.e("setAppinsideWeb", "setAppinsideWeb: " + response.msg);
}
+ }
+
+ public static final String JGY_APPINSIDE_WHITELIST = "JGY_APPINSIDE_WHITELIST";
+ public static final String JGY_APPINSIDE_FIRST_WRITE = "JGY_APPINSIDE_FIRST_WRITE";
+
+ @SuppressLint("NewApi")
+ synchronized private void setWhiteApp(List appgrounds) {
+ int first = (int) SPUtils.get(mContext, JGYUtils.JGY_APPINSIDE_FIRST_WRITE, 0);
+ if (first == 0) {
+ for (TTAppground appground : appgrounds) {
+ if (TextUtils.isEmpty(appground.getAddress())) {
+ Log.e(TAG, "setWhiteApp: " + "skip: " + appground.getAddress());
+ } else {
+ addPackage(appground.getPackages());
+ addToWhitelist(appground.getPackages(), appground.getAddress());
+ }
+ }
+ SPUtils.put(mContext, JGYUtils.JGY_APPINSIDE_FIRST_WRITE, 1);
+ } else {
+ List old = getOldWhitelist();
+ comparedAppground(old, appgrounds);
+ setWhiteList(appgrounds);
+ }
}
- private static void sendAllweb(Context context) {
+ synchronized private void comparedAppground(List oldAppgrounds, List newAppgrounds) {
+ List addAppgrounds = new ArrayList<>();
+ List deleteAppgrounds = new ArrayList<>();
+ List changedAppgrounds = new ArrayList<>();
+
+ HashMap oldAppgroundsMap = new HashMap<>();
+ HashMap newAppgroundsMap = new HashMap<>();
+ for (TTAppground appground : oldAppgrounds) {
+ oldAppgroundsMap.put(appground.getPackages(), appground);
+ }
+ for (TTAppground appground : newAppgrounds) {
+ newAppgroundsMap.put(appground.getPackages(), appground);
+ }
+
+ for (TTAppground appground : oldAppgrounds) {
+ String packageName = appground.getPackages();
+ TTAppground mapground = newAppgroundsMap.get(packageName);
+ if (mapground == null) {
+ deleteAppgrounds.add(appground);
+ } else {
+ if (!appground.equals(mapground)) {
+ changedAppgrounds.add(mapground);
+ }
+ }
+ newAppgroundsMap.remove(packageName);
+ }
+
+ for (Map.Entry entry : newAppgroundsMap.entrySet()) {
+ addAppgrounds.add(entry.getValue());
+ }
+
+ Log.e(TAG, "comparedAppground: addAppgrounds.size():" + addAppgrounds.size());
+ Log.e(TAG, "comparedAppground: deleteAppgrounds.size():" + deleteAppgrounds.size());
+ Log.e(TAG, "comparedAppground: changedAppgrounds.size():" + changedAppgrounds.size());
+
+ addAppground(addAppgrounds);
+ deleteAppground(deleteAppgrounds);
+ changeAppground(oldAppgroundsMap, changedAppgrounds);
+
+
+ }
+
+ private void addAppground(List appgroundList) {
+ for (TTAppground appground : appgroundList) {
+ addPackage(appground.getPackages());
+ addToWhitelist(appground.getPackages(), appground.getAddress());
+ Log.e("comparedAppground", "addAppground: " + appground.getAddress());
+ }
+ }
+
+ private void deleteAppground(List appgroundList) {
+ for (TTAppground appground : appgroundList) {
+ deleteWhitelistUrl(appground.getPackages(), appground.getAddress());
+ Log.e("comparedAppground", "deleteAppground: " + appground.getAddress());
+ }
+ }
+
+ private void changeAppground(HashMap oldAppgroundsMap, List appgroundList) {
+ for (TTAppground appground : appgroundList) {
+ HashSet newURL = new HashSet<>(Arrays.asList(appground.getAddress().split(",")));
+ TTAppground oldAppground = oldAppgroundsMap.get(appground.getPackages());
+ HashSet oldURL = new HashSet<>(Arrays.asList(oldAppground.getAddress().split(",")));
+ for (String url : newURL) {
+ if (oldURL.contains(url)) {
+ oldURL.remove(url);
+ } else {
+ addToWhitelist(appground.getPackages(), url);
+ Log.e("comparedAppground", "addToWhitelist: " + url);
+ }
+ }
+ for (String url : oldURL) {
+ deleteWhitelistUrl(appground.getPackages(), url);
+ Log.e("comparedAppground", "deleteWhitelistUrl: " + url);
+ }
+ }
+ }
+
+
+ private List getOldWhitelist() {
+ String whiteListString = (String) SPUtils.get(mContext, JGY_APPINSIDE_WHITELIST, "");
+ Log.e(TAG, "getOldWhitelist: " + whiteListString);
+ Gson gson = new Gson();
+ Type listType = new TypeToken>() {
+ }.getType();
+ List whiteList = gson.fromJson(whiteListString, listType);
+ if (whiteList == null) {
+ whiteList = new ArrayList<>();
+ }
+ return whiteList;
+ }
+
+ private void setWhiteList(List appgrounds) {
+ String data = new Gson().toJson(appgrounds);
+ SPUtils.put(mContext, JGY_APPINSIDE_WHITELIST, data);
+ }
+
+
+ /**
+ * @param pkg 开启app白名单
+ */
+ synchronized private void addPackage(String pkg) {
+ Log.e(TAG, "addPackage: " + pkg);
+ Intent intent26 = new Intent();
+ intent26.setAction("qch_app_inside_website");
+ intent26.putExtra("WEBURLforbidapp", pkg);
+ intent26.setPackage("com.android.settings");
+ mContext.sendBroadcast(intent26);
+ }
+
+ /**
+ * @param pkg
+ * @param urls 添加app白名单
+ */
+ synchronized private void addToWhitelist(String pkg, String urls) {
+ if (TextUtils.isEmpty(urls.trim())) {
+ Log.e(TAG, "addToWhitelist: " + "urls is NULL");
+ return;
+ }
+ HashSet urlSet = new HashSet<>(Arrays.asList(urls.trim().split(",")));
+ for (String url : urlSet) {
+ if (TextUtils.isEmpty(url)) {
+ continue;
+ }
+ Intent intent25 = new Intent();
+ intent25.setAction("qch_app_setAddAppWhitWebUid");
+ intent25.putExtra("AddAppWhitWebUidPackage", pkg);
+ intent25.putExtra("AddAppWhitWebUid", url);
+ intent25.setPackage("com.android.settings");
+ mContext.sendBroadcast(intent25);
+ }
+ }
+
+ /**
+ * @param pkg
+ * @param urls 删除某个app 内某个白名单
+ */
+ synchronized private void deleteWhitelistUrl(String pkg, String urls) {
+ if (TextUtils.isEmpty(urls.trim())) {
+ Log.e(TAG, "addToWhitelist: " + "urls is NULL");
+ return;
+ }
+ HashSet urlSet = new HashSet<>(Arrays.asList(urls.trim().split(",")));
+ for (String url : urlSet) {
+ if (TextUtils.isEmpty(url)) {
+ continue;
+ }
+ Intent intent25 = new Intent();
+ intent25.setAction("qch_app_setAddAppWhitWebUid");
+ intent25.putExtra("DelAppWhitWebUidPackage", pkg);
+ intent25.putExtra("DelAppWhitWebUid", url);
+ intent25.setPackage("com.android.settings");
+ mContext.sendBroadcast(intent25);
+ }
+ }
+
+ /**
+ * @param pkg 取消某个白名单app
+ */
+ // TODO: 2021/6/16 底层未实现功能
+ synchronized private void disableAppWhitelist(String pkg) {
+ Log.e(TAG, "disableAppWhitelist: " + pkg);
+ Intent intent24 = new Intent();
+ intent24.setAction("qch_app_setDelAppWhitUid");
+ intent24.putExtra("DelAppWhitUidPackage", pkg);
+ intent24.setPackage("com.android.settings");
+ mContext.sendBroadcast(intent24);
+ }
+
+ /**
+ * @param appgrounds 设置黑名单管控
+ */
+ synchronized private void setBlackApp(List appgrounds) {
+ StringBuilder blackList = new StringBuilder();
+ StringBuilder packageList = new StringBuilder();//单条管控名单
+ for (TTAppground appground : appgrounds) {
+ if (TextUtils.isEmpty(appground.getAddress())) {
+ if (packageList.length() > 0) {
+ packageList.append(",");
+ }
+ packageList.append(appground.getPackages());
+ } else {
+ if (blackList.length() > 0) {
+ blackList.append(";");
+ }
+ blackList.append(appground.toString());
+ }
+ }
+ //old
+ if (packageList.length() > 0) {
+ //app内所有的网页禁止
+ 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());
+ mContext.sendBroadcast(qch_app_website);
+ } else {
+ sendAllweb(mContext);
+ }
+ if (blackList.length() > 0) {
+ //app内单个网页地址禁止打开
+ Log.e("setAppinsideWeb ", "blackList:" + blackList.toString());
+ Intent intent = new Intent("qch_app_inside_website")
+ .setPackage("com.android.settings");
+ intent.putExtra("websitelist", blackList.toString());
+ mContext.sendBroadcast(intent);
+ } else {
+ sendwebUrl(mContext);
+ }
+ }
+
+
+ synchronized private static void sendAllweb(Context context) {
Intent intent = new Intent("qch_app_website")
.setPackage("com.android.settings");
intent.putExtra("package_name", "Invalid");
context.sendBroadcast(intent);
}
- private static void sendwebUrl(Context context) {
+ synchronized private static void sendwebUrl(Context context) {
Intent intent = new Intent("qch_app_inside_website")
.setPackage("com.android.settings");
intent.putExtra("websitelist", "Invalid");
context.sendBroadcast(intent);
}
- public void SettingSysData(String data) {
+ synchronized public void SettingSysData(String data) {
if (TextUtils.isEmpty(data)) {
Log.e(TAG, "SettingSysData: " + "data is empty");
return;
@@ -717,7 +907,7 @@ public class JGYUtils {
public void deleteOtherApp() {
Log.e(TAG, "deleteOtherApp: " + "start");
//获取后台应用白名单
- String only_jgy_shortcut_list = Settings.System.getString(mContext.getContentResolver(), "only_jgy_shortcut_list");
+ String only_jgy_shortcut_list = Settings.System.getString(mContext.getContentResolver(), "only_jgy_shortcut_list");
//获取可以被安装的包名
String qch_app_forbid = Settings.System.getString(mContext.getContentResolver(), "qch_app_forbid");
Log.e("deleteOtherApp", "only_jgy_shortcut_list:" + only_jgy_shortcut_list);