version:
update:2021.04.02 fix:浏览器主页写进白名单,开机动画接口推送对接 add:
This commit is contained in:
@@ -87,6 +87,7 @@
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:networkSecurityConfig="@xml/network"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
|
||||
|
||||
@@ -293,8 +293,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getBrowserListFinished() {
|
||||
mPresenter.getBrowserBookmarks();
|
||||
public void getBrowserListFinished(String whitelist) {
|
||||
mPresenter.getBrowserBookmarks(whitelist);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -45,7 +45,7 @@ public class MainContact {
|
||||
//获取设备批次结束
|
||||
void getForceDownloadFinished();
|
||||
//获取强制下载apk结束
|
||||
void getBrowserListFinished();
|
||||
void getBrowserListFinished(String whitelist);
|
||||
//获取浏览器上网管控设置结束
|
||||
void getBrowserBookmarksFinished();
|
||||
//获取浏览器书签设置管控结束
|
||||
@@ -106,7 +106,7 @@ public class MainContact {
|
||||
//获取强制下载apk
|
||||
void getBrowserList();
|
||||
//获取浏览器上网管控设置
|
||||
void getBrowserBookmarks();
|
||||
void getBrowserBookmarks(String whitelist);
|
||||
//获取浏览器书签设置管控
|
||||
void getDesktopIcon();
|
||||
//获取应用图标桌面可见性管控
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.jiaoguanyi.appstore.bean.Desktop;
|
||||
import com.jiaoguanyi.appstore.bean.ForceDownloadBean;
|
||||
import com.jiaoguanyi.appstore.bean.LogoImg;
|
||||
import com.jiaoguanyi.appstore.bean.NetAndLaunchBean;
|
||||
import com.jiaoguanyi.appstore.bean.NewAppground;
|
||||
import com.jiaoguanyi.appstore.bean.StudentsInfo;
|
||||
import com.jiaoguanyi.appstore.jpush.TagAliasOperatorHelper;
|
||||
import com.jiaoguanyi.appstore.manager.NetInterfaceManager;
|
||||
@@ -716,7 +717,7 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
|
||||
BaseApplication.getInstance().checkIsDownloading();
|
||||
if (!BaseApplication.getInstance().isDownloading()) {
|
||||
Aria.download(this).removeAllTask(true);
|
||||
// Aria.download(this).removeAllTask(true);
|
||||
JGYUtils.getInstance().forceDownload(forceDownloadBean.getData());
|
||||
} else {
|
||||
Aria.download(this).resumeAllTask();
|
||||
@@ -762,7 +763,12 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
Log.e("getBrowserList", "onNext: ");
|
||||
if (browserDataBaseResponse.code == 200) {
|
||||
String white = browserDataBaseResponse.data.getWhite();
|
||||
mView.getBrowserListFinished(white);
|
||||
if (!TextUtils.isEmpty(white)) {
|
||||
String homePage = Settings.System.getString(mContext.getContentResolver(), "homepagURL");
|
||||
if (!white.contains(homePage) && !TextUtils.isEmpty(homePage)) {
|
||||
white += "," + homePage;
|
||||
}
|
||||
boolean whiteList = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", white);
|
||||
Log.e("getBrowserList", "setBrowserList white: " + white + ":" + whiteList);
|
||||
} else {
|
||||
@@ -775,6 +781,8 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
} else {
|
||||
Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
|
||||
}
|
||||
} else {
|
||||
mView.getBrowserListFinished("");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -787,13 +795,13 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getBrowserList", "onComplete: ");
|
||||
mView.getBrowserListFinished();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getBrowserBookmarks() {
|
||||
public void getBrowserBookmarks(String whitelist) {
|
||||
List<String> whiteLists = Arrays.asList(whitelist.split(","));
|
||||
NetInterfaceManager.getInstance()
|
||||
.getBrowserBookmarksObservable()
|
||||
.observeOn(Schedulers.io())
|
||||
@@ -806,15 +814,24 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<BrowserBookmarks> browserBookmarksBaseResponse) {
|
||||
Log.e("getBrowserBookmarks", "onNext: ");
|
||||
String whiteString = whitelist;
|
||||
if (browserBookmarksBaseResponse.code == 200) {
|
||||
//主页
|
||||
String homepagURL = browserBookmarksBaseResponse.data.getHomepage();
|
||||
boolean home = Settings.System.putString(mContext.getContentResolver(), "homepagURL", homepagURL);
|
||||
Log.e("getBrowserBookmarks", "onNext: homepagURL: save homepagURL = " + home);
|
||||
if (whiteLists.size() <= 0 || !whiteLists.contains(homepagURL)) {
|
||||
whiteString += "," + homepagURL;
|
||||
boolean white = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", whiteString);
|
||||
Log.e("getBrowserBookmarks", "onNext: homepagURL: add to whiteList = " + whiteString + "write: " + white);
|
||||
}
|
||||
|
||||
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 (homepagURL != null && !homepagURL.equals("")) {
|
||||
if (!TextUtils.isEmpty(homepagURL)) {
|
||||
homepag.putExtra("homepage", homepagURL);
|
||||
} else {
|
||||
homepag.putExtra("homepage", "Invalid");
|
||||
@@ -828,7 +845,7 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
websiteBookMark.setPackage("com.android.settings")
|
||||
.setPackage("com.android.browser");
|
||||
}
|
||||
if (labelpage != null && !labelpage.equals("")) {
|
||||
if (!TextUtils.isEmpty(labelpage)) {
|
||||
websiteBookMark.putExtra("websiteBookMark", labelpage);
|
||||
} else {
|
||||
websiteBookMark.putExtra("websiteBookMark", "Invalid");
|
||||
@@ -842,6 +859,7 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
}
|
||||
intent1.putExtra("homepage", "Invalid");
|
||||
mContext.sendBroadcast(intent1);
|
||||
Settings.System.putString(mContext.getContentResolver(), "homepagURL", "");
|
||||
Intent intent2 = new Intent("qch_app_brower_website");
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent2.setPackage("com.android.settings")
|
||||
@@ -1002,6 +1020,15 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
|
||||
@Override
|
||||
public void setAppinsideWeb() {
|
||||
String channel_value = JGYUtils.getInstance().getStringMetaData();
|
||||
if ("official".equals(channel_value)) {
|
||||
getAppinsideWeb();
|
||||
} else {
|
||||
getNewAppinsideWeb();
|
||||
}
|
||||
}
|
||||
|
||||
private void getAppinsideWeb() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getAppinsideWebObservable()
|
||||
.observeOn(Schedulers.io())
|
||||
@@ -1031,6 +1058,35 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
});
|
||||
}
|
||||
|
||||
private void getNewAppinsideWeb() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getNewAppinsideWebObservable()
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(new Observer<BaseResponse<List<NewAppground>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getNewAppinsideWeb", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<NewAppground>> listBaseResponse) {
|
||||
Log.e("getNewAppinsideWeb", "onNext: ");
|
||||
JGYUtils.getInstance().setNewAppinsideWeb(listBaseResponse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getNewAppinsideWeb", "onError: ");
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getNewAppinsideWeb", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSystemSetting() {
|
||||
NetInterfaceManager.getInstance()
|
||||
@@ -1123,7 +1179,8 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
@Override
|
||||
public void getScreenLockState() {
|
||||
String channel_value = JGYUtils.getInstance().getStringMetaData();
|
||||
if ("official".equals(channel_value)) {
|
||||
int locked = Settings.System.getInt(mContext.getContentResolver(), "qch_unlock_ipad", 1);
|
||||
if ("official".equals(channel_value) || locked == 1) {
|
||||
mView.setScreenLockStateFinished(false, "");
|
||||
return;
|
||||
}
|
||||
@@ -1185,9 +1242,14 @@ public class MainPresenter implements MainContact.Presenter {
|
||||
Log.e("getDefaultDesktop", "onNext: ");
|
||||
try {
|
||||
JSONObject jsonObject = JSONObject.parseObject(responseBody.string());
|
||||
JSONObject data = jsonObject.getJSONObject("data");
|
||||
JGYUtils.getInstance().installDesktop(data);
|
||||
Log.e("getDefaultDesktop", "onNext: " + data.toJSONString());
|
||||
int code = jsonObject.getInteger("code");
|
||||
if (code == 200) {
|
||||
JSONObject data = jsonObject.getJSONObject("data");
|
||||
JGYUtils.getInstance().installDesktop(data);
|
||||
} else {
|
||||
Log.e("getDefaultDesktop", "onNext: " + jsonObject.toJSONString());
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Log.e("getDefaultDesktop", "onNext: IOException: " + e.getMessage());
|
||||
|
||||
@@ -3,10 +3,14 @@ package com.jiaoguanyi.appstore.activity;
|
||||
import android.app.StatusBarManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
@@ -17,12 +21,16 @@ import com.jiaoguanyi.appstore.utils.Utils;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
|
||||
public class SplashActivity extends AppCompatActivity {
|
||||
private static String TAG = SplashActivity.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -42,28 +50,112 @@ public class SplashActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void DebugTest() {
|
||||
Utils.getHardware(this);
|
||||
// Utils.getHardware(this);
|
||||
hookWebView();
|
||||
setWebView();
|
||||
}
|
||||
|
||||
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "bootanimation.zip");
|
||||
String path0 = "/data/local/qchmedia/bootanimation.zip";
|
||||
if (file.exists()) {
|
||||
File file1 = new File(path0);
|
||||
if (!file1.exists()) {
|
||||
file.mkdirs();
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Log.e("bootanimation", e.getMessage());
|
||||
private void bootanimotion() {
|
||||
// File file = new File(Environment.getExternalStorageDirectory() + File.separator + "bootanimation.zip");
|
||||
// String path0 = "/data/local/qchmedia/bootanimation.zip";
|
||||
// if (file.exists()) {
|
||||
// File file1 = new File(path0);
|
||||
// if (!file1.exists()) {
|
||||
// file.mkdirs();
|
||||
// try {
|
||||
// file.createNewFile();
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// Log.e("bootanimation", e.getMessage());
|
||||
// }
|
||||
// }
|
||||
// Log.e("bootanimation", "SD卡路径存在");
|
||||
// try {
|
||||
// Path path = Paths.get(file.getAbsolutePath());
|
||||
// Files.copy(path, new FileOutputStream(path0));
|
||||
// } catch (Exception e) {
|
||||
// Log.e("bootanimation", e.getMessage());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
static final String url = "www.baidu.com";
|
||||
|
||||
private void setWebView() {
|
||||
WebView webView = new WebView(this);
|
||||
webView.loadUrl(url);
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.setWebViewClient(new WebViewClient() {
|
||||
//页面加载开始
|
||||
@Override
|
||||
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||||
super.onPageStarted(view, url, favicon);
|
||||
}
|
||||
|
||||
//页面加载完成
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
super.onPageFinished(view, url);
|
||||
String realUrl = url;
|
||||
//这个realUrl即为重定向之后的地址
|
||||
Log.e(TAG, "onPageFinished: " + realUrl);
|
||||
}
|
||||
});
|
||||
}
|
||||
public static void hookWebView(){
|
||||
int sdkInt = Build.VERSION.SDK_INT;
|
||||
try {
|
||||
Class<?> factoryClass = Class.forName("android.webkit.WebViewFactory");
|
||||
Field field = factoryClass.getDeclaredField("sProviderInstance");
|
||||
field.setAccessible(true);
|
||||
Object sProviderInstance = field.get(null);
|
||||
if (sProviderInstance != null) {
|
||||
Log.i(TAG,"sProviderInstance isn't null");
|
||||
return;
|
||||
}
|
||||
|
||||
Method getProviderClassMethod;
|
||||
if (sdkInt > 22) {
|
||||
getProviderClassMethod = factoryClass.getDeclaredMethod("getProviderClass");
|
||||
} else if (sdkInt == 22) {
|
||||
getProviderClassMethod = factoryClass.getDeclaredMethod("getFactoryClass");
|
||||
} else {
|
||||
Log.i(TAG,"Don't need to Hook WebView");
|
||||
return;
|
||||
}
|
||||
getProviderClassMethod.setAccessible(true);
|
||||
Class<?> factoryProviderClass = (Class<?>) getProviderClassMethod.invoke(factoryClass);
|
||||
Class<?> delegateClass = Class.forName("android.webkit.WebViewDelegate");
|
||||
Constructor<?> delegateConstructor = delegateClass.getDeclaredConstructor();
|
||||
delegateConstructor.setAccessible(true);
|
||||
if(sdkInt < 26){//低于Android O版本
|
||||
Constructor<?> providerConstructor = factoryProviderClass.getConstructor(delegateClass);
|
||||
if (providerConstructor != null) {
|
||||
providerConstructor.setAccessible(true);
|
||||
sProviderInstance = providerConstructor.newInstance(delegateConstructor.newInstance());
|
||||
}
|
||||
} else {
|
||||
Field chromiumMethodName = factoryClass.getDeclaredField("CHROMIUM_WEBVIEW_FACTORY_METHOD");
|
||||
chromiumMethodName.setAccessible(true);
|
||||
String chromiumMethodNameStr = (String)chromiumMethodName.get(null);
|
||||
if (chromiumMethodNameStr == null) {
|
||||
chromiumMethodNameStr = "create";
|
||||
}
|
||||
Method staticFactory = factoryProviderClass.getMethod(chromiumMethodNameStr, delegateClass);
|
||||
if (staticFactory!=null){
|
||||
sProviderInstance = staticFactory.invoke(null, delegateConstructor.newInstance());
|
||||
}
|
||||
}
|
||||
Log.e("bootanimation", "SD卡路径存在");
|
||||
try {
|
||||
Path path = Paths.get(file.getAbsolutePath());
|
||||
Files.copy(path, new FileOutputStream(path0));
|
||||
} catch (Exception e) {
|
||||
Log.e("bootanimation", e.getMessage());
|
||||
|
||||
if (sProviderInstance != null){
|
||||
field.set("sProviderInstance", sProviderInstance);
|
||||
Log.i(TAG,"Hook success!");
|
||||
} else {
|
||||
Log.i(TAG,"Hook failed!");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Log.w(TAG,e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.jiaoguanyi.appstore.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class NewAppground implements Serializable {
|
||||
private static final long serialVersionUID = -2071117846816082338L;
|
||||
private String packages;
|
||||
private String address;
|
||||
private String type;
|
||||
|
||||
public String getPackages() {
|
||||
return packages;
|
||||
}
|
||||
|
||||
public void setPackages(String packages) {
|
||||
this.packages = packages;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import com.jiaoguanyi.appstore.bean.Desktop;
|
||||
import com.jiaoguanyi.appstore.bean.ForceDownloadBean;
|
||||
import com.jiaoguanyi.appstore.bean.LogoImg;
|
||||
import com.jiaoguanyi.appstore.bean.NetAndLaunchBean;
|
||||
import com.jiaoguanyi.appstore.bean.NewAppground;
|
||||
import com.jiaoguanyi.appstore.bean.StudentsInfo;
|
||||
import com.jiaoguanyi.appstore.network.api.AppLimitApi;
|
||||
import com.jiaoguanyi.appstore.network.api.BrankPicApi;
|
||||
@@ -37,6 +38,7 @@ import com.jiaoguanyi.appstore.network.api.newapi.GetLockStateApi;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.JpushTagsApi;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.LogoImgApi;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.MACAddressApi;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.NewAppinsideWebApi;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.ScreenLockStateApi;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.SnTimeControl;
|
||||
import com.jiaoguanyi.appstore.network.api.newapi.StudentsInfosApi;
|
||||
@@ -224,6 +226,14 @@ public class NetInterfaceManager {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<List<NewAppground>>> getNewAppinsideWebObservable() {
|
||||
return mRetrofit
|
||||
.create(NewAppinsideWebApi.class)
|
||||
.getAppinsideWeb(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<ResponseBody> getSystemSettingObservable() {
|
||||
return mRetrofit
|
||||
.create(SystemSettingApi.class)
|
||||
|
||||
@@ -400,77 +400,6 @@ public class HTTPInterface {
|
||||
});
|
||||
}
|
||||
|
||||
synchronized public static void setHomepagtag(final Context context) {
|
||||
//7.0setPackage不加没有问题,.setPackage("com.android.settings"),10.0需要加上,待底层修改后
|
||||
OkGo.post(URLAddress.SET_HOMEPAG_TAG)
|
||||
.params("key", NetInterfaceManager.HTTP_KEY)
|
||||
.params("sn", Utils.getSerial())
|
||||
.execute(new StringCallback() {
|
||||
@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");
|
||||
JSONObject jsondata = JSON.parseObject(data);
|
||||
//主页
|
||||
String homepagURL = jsondata.getString("homepage");
|
||||
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 (homepagURL != null && !homepagURL.equals("")) {
|
||||
homepag.putExtra("homepage", homepagURL);
|
||||
} else {
|
||||
homepag.putExtra("homepage", "Invalid");
|
||||
}
|
||||
context.sendBroadcast(homepag);
|
||||
|
||||
//书签
|
||||
String labelpage = jsondata.getString("labelpage");
|
||||
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 (labelpage != null && !labelpage.equals("")) {
|
||||
websiteBookMark.putExtra("websiteBookMark", labelpage);
|
||||
} 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);
|
||||
}
|
||||
// } catch (Exception e) {
|
||||
// Log.e("fht", "setHomepagtag" + e.getMessage());
|
||||
//// ToastUtil.show("数据错误");
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Call call, Response response, Exception e) {
|
||||
super.onError(call, response, e);
|
||||
// ToastUtil.show("网络连接失败");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
synchronized public static void setAppinsideWeb(final Context context) {
|
||||
OkGo.post(URLAddress.SET_APPINSIDEWEB)
|
||||
@@ -571,14 +500,18 @@ public class HTTPInterface {
|
||||
if (code == 200) {
|
||||
JSONObject data = JSON.parseObject(jsonObject.getString("data"));
|
||||
String white = data.getString("white");
|
||||
if (white != null && !white.equals("")) {
|
||||
String homePage = Settings.System.getString(context.getContentResolver(), "homepagURL");
|
||||
if (!TextUtils.isEmpty(white)) {
|
||||
if (!white.contains(homePage) && !TextUtils.isEmpty(homePage)) {
|
||||
white += "," + homePage;
|
||||
}
|
||||
boolean whiteList = Settings.System.putString(context.getContentResolver(), "DeselectBrowserArray", white);
|
||||
Log.e("SystemSetting", "setBrowserList----white-----" + whiteList + ":" + white);
|
||||
} else {
|
||||
Settings.System.putString(context.getContentResolver(), "DeselectBrowserArray", " ");
|
||||
}
|
||||
String black = data.getString("black");
|
||||
if (black != null && !black.equals("")) {
|
||||
if (!TextUtils.isEmpty(black)) {
|
||||
boolean blackList = Settings.System.putString(context.getContentResolver(), "qch_webblack_url", black);
|
||||
Log.e("SystemSetting", "setBrowserList----black-----" + blackList + ":" + black);
|
||||
} else {
|
||||
@@ -599,6 +532,88 @@ public class HTTPInterface {
|
||||
});
|
||||
}
|
||||
|
||||
synchronized public static void setHomepagtag(final Context context) {
|
||||
//7.0setPackage不加没有问题,.setPackage("com.android.settings"),10.0需要加上,待底层修改后
|
||||
OkGo.post(URLAddress.SET_HOMEPAG_TAG)
|
||||
.params("key", NetInterfaceManager.HTTP_KEY)
|
||||
.params("sn", Utils.getSerial())
|
||||
.execute(new StringCallback() {
|
||||
@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");
|
||||
JSONObject jsondata = JSON.parseObject(data);
|
||||
//主页
|
||||
String homepagURL = jsondata.getString("homepage");
|
||||
boolean home = Settings.System.putString(context.getContentResolver(), "homepagURL", homepagURL);
|
||||
String DeselectBrowserArray = Settings.System.getString(context.getContentResolver(), "DeselectBrowserArray");
|
||||
Log.e("setHomepagtag", "execute: DeselectBrowserArray: = " + DeselectBrowserArray);
|
||||
if (!DeselectBrowserArray.contains(homepagURL)) {
|
||||
DeselectBrowserArray += "," + homepagURL;
|
||||
boolean white = Settings.System.putString(context.getContentResolver(), "DeselectBrowserArray", DeselectBrowserArray);
|
||||
Log.e("setHomepagtag", "execute: homepagURL: add to whiteList = " + DeselectBrowserArray + "write: " + white);
|
||||
}
|
||||
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(homepagURL)) {
|
||||
homepag.putExtra("homepage", homepagURL);
|
||||
} else {
|
||||
homepag.putExtra("homepage", "Invalid");
|
||||
}
|
||||
context.sendBroadcast(homepag);
|
||||
|
||||
//书签
|
||||
String labelpage = jsondata.getString("labelpage");
|
||||
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 (!TextUtils.isEmpty(labelpage)) {
|
||||
websiteBookMark.putExtra("websiteBookMark", labelpage);
|
||||
} 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);
|
||||
Settings.System.putString(context.getContentResolver(), "homepagURL", "");
|
||||
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);
|
||||
}
|
||||
// } catch (Exception e) {
|
||||
// Log.e("fht", "setHomepagtag" + e.getMessage());
|
||||
//// ToastUtil.show("数据错误");
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Call call, Response response, Exception e) {
|
||||
super.onError(call, response, e);
|
||||
// ToastUtil.show("网络连接失败");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public static void setHideDesktopIcon(final Context context) {
|
||||
OkGo.post(URLAddress.GET_HIDE_DESKTOPICON)
|
||||
.params("key", NetInterfaceManager.HTTP_KEY)
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.jiaoguanyi.appstore.network.api.newapi;
|
||||
|
||||
|
||||
import com.jiaoguanyi.appstore.bean.BaseResponse;
|
||||
import com.jiaoguanyi.appstore.bean.NewAppground;
|
||||
import com.jiaoguanyi.appstore.network.URLAddress;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import retrofit2.http.Field;
|
||||
import retrofit2.http.FormUrlEncoded;
|
||||
import retrofit2.http.POST;
|
||||
|
||||
public interface NewAppinsideWebApi {
|
||||
@FormUrlEncoded
|
||||
@POST(URLAddress.SET_APPINSIDEWEB)
|
||||
Observable<BaseResponse<List<NewAppground>>> getAppinsideWeb(
|
||||
@Field("key") String key,
|
||||
@Field("sn") String sn
|
||||
);
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.amap.api.location.AMapLocation;
|
||||
import com.amap.api.location.AMapLocationClient;
|
||||
import com.amap.api.location.AMapLocationListener;
|
||||
import com.blankj.utilcode.util.PathUtils;
|
||||
import com.jiaoguanyi.appstore.utils.JGYUtils;
|
||||
import com.lzy.okgo.OkGo;
|
||||
import com.lzy.okgo.callback.StringCallback;
|
||||
import com.jiaoguanyi.appstore.base.BaseApplication;
|
||||
@@ -116,6 +117,8 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
||||
|
||||
private final String TOP_APP = "28";//app霸屏
|
||||
|
||||
private final String LOGO_IMG = "29";//开机动画
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
@@ -337,6 +340,10 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
||||
case TOP_APP:
|
||||
getTopApp(context, extras);
|
||||
break;
|
||||
case LOGO_IMG:
|
||||
setBootanimation(context, extras);
|
||||
Log.e(TAG, "processCustomMessage: " + extras);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1325,7 +1332,24 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
||||
private void getTopApp(Context context, String extras) {
|
||||
com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(extras);
|
||||
String packageName = jsonObject.getString("app_package");
|
||||
if (TextUtils.isEmpty(packageName)) {
|
||||
return;
|
||||
}
|
||||
SPUtils.put(context, ForegroundAppUtil.TOPAPP_KEY, packageName);
|
||||
ForegroundAppUtil.openTopApp(context);
|
||||
}
|
||||
|
||||
private void setBootanimation(Context context, String extras) {
|
||||
com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(extras);
|
||||
int type = jsonObject.getInteger("type");
|
||||
if (type == 1) {
|
||||
String file_url = jsonObject.getString("file_url");
|
||||
String file_md5 = jsonObject.getString("file_md5");
|
||||
JGYUtils.getInstance().checkBootFile(file_url, file_md5);
|
||||
} else {
|
||||
JGYUtils.getInstance().removeBootanimation();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ public class GuardService extends Service {
|
||||
JSONObject jsonObject = JSON.parseObject(task.getExtendField());
|
||||
String app_name = jsonObject.getString("app_name");
|
||||
String app_package = jsonObject.getString("app_package");
|
||||
Log.e("aria", "正在下载---:" + task.getPercent() + ":" + task.getExtendField());
|
||||
Log.e("aria", "正在下载:" + task.getPercent() + ":" + task.getExtendField());
|
||||
ToastUtil.show("正在下载:" + app_name + "-" + task.getPercent() + "%" + "\t" + Formatter.formatFileSize(GuardService.this, task.getSpeed()) + "/s");
|
||||
}
|
||||
|
||||
@@ -343,6 +343,7 @@ public class GuardService extends Service {
|
||||
Log.e("aria", "isDownloading=" + BaseApplication.getInstance().isDownloading());
|
||||
}
|
||||
} else if (filepath.endsWith("zip")) {
|
||||
Log.e("aria", "下载完成:" + task.getPercent() + ":" + task.getExtendField());
|
||||
JGYUtils.getInstance().setBootanimation(task.getFilePath());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,13 +70,13 @@ public class MainService extends Service implements MainContact.MainView {
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
if (MainActivity.isForeground){
|
||||
if (MainActivity.isForeground) {
|
||||
Log.e(TAG, "onStartCommand: MainActivity: " + MainActivity.isForeground);
|
||||
}else {
|
||||
if (((SystemClock.elapsedRealtime() - startCommandTime) < 60000) ){
|
||||
} else {
|
||||
if (((SystemClock.elapsedRealtime() - startCommandTime) < 60000) && startCommandTime != 0) {
|
||||
Log.e(TAG, "onStartCommand: " + "启动时间过短");
|
||||
//一分钟内防止多次调用
|
||||
}else {
|
||||
} else {
|
||||
mPresenter.getFirstConnect();
|
||||
mPresenter.getLockedState();
|
||||
startCommandTime = runningTime = SystemClock.elapsedRealtime();
|
||||
@@ -391,8 +391,8 @@ public class MainService extends Service implements MainContact.MainView {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getBrowserListFinished() {
|
||||
mPresenter.getBrowserBookmarks();
|
||||
public void getBrowserListFinished(String whitelist) {
|
||||
mPresenter.getBrowserBookmarks(whitelist);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.jiaoguanyi.appstore.bean.BaseResponse;
|
||||
import com.jiaoguanyi.appstore.bean.ForceDownloadData;
|
||||
import com.jiaoguanyi.appstore.bean.NetAndLaunchBean;
|
||||
import com.jiaoguanyi.appstore.bean.NetAndLaunchData;
|
||||
import com.jiaoguanyi.appstore.bean.NewAppground;
|
||||
import com.jiaoguanyi.appstore.comm.CommonDatas;
|
||||
|
||||
import org.w3c.dom.Text;
|
||||
@@ -270,7 +271,7 @@ public class JGYUtils {
|
||||
String strings = "";
|
||||
String packageList = "";//单条管控名单
|
||||
for (Appground appground : appgrounds) {
|
||||
if (appground.getAddress().equals("")) {
|
||||
if (TextUtils.isEmpty(appground.getAddress())) {
|
||||
packageList += appground.getPackages() + ",";
|
||||
} else {
|
||||
strings += appground.toString() + ";";
|
||||
@@ -310,6 +311,54 @@ public class JGYUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public void setNewAppinsideWeb(BaseResponse<List<NewAppground>> response){
|
||||
if (response.code == 200) {
|
||||
List<NewAppground> appgrounds = response.data;
|
||||
if (appgrounds != null && appgrounds.size() > 0) {
|
||||
String strings = "";
|
||||
String packageList = "";//单条管控名单
|
||||
for (NewAppground appground : appgrounds) {
|
||||
if (TextUtils.isEmpty(appground.getAddress())) {
|
||||
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);
|
||||
mContext.sendBroadcast(qch_app_website);
|
||||
} else {
|
||||
sendAllweb(mContext);
|
||||
}
|
||||
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);
|
||||
mContext.sendBroadcast(intent);
|
||||
} else {
|
||||
sendwebUrl(mContext);
|
||||
}
|
||||
}
|
||||
} else if (response.code == 400) {
|
||||
//列表为空的情况
|
||||
sendAllweb(mContext);
|
||||
sendwebUrl(mContext);
|
||||
//ToastUtil.show(msg);
|
||||
Log.e("setAppinsideWeb", "setAppinsideWeb: " + response.msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void sendAllweb(Context context) {
|
||||
Intent intent = new Intent("qch_app_website")
|
||||
.setPackage("com.android.settings");
|
||||
@@ -585,6 +634,8 @@ public class JGYUtils {
|
||||
public void checkBootFile(String url, String MD5) {
|
||||
String urlFileName = Utils.getFileNamefromURL(url);
|
||||
File bootFile = new File(PathUtils.getExternalDownloadsPath() + File.separator + "jgy" + File.separator + urlFileName);
|
||||
Log.e(TAG, "checkBootFile: bootFile file path=" + bootFile.getAbsolutePath());
|
||||
Log.e(TAG, "checkBootFile: bootFile exists=" + bootFile.exists() + " isFile=" + bootFile.isFile());
|
||||
if (bootFile.exists() && bootFile.isFile()) {
|
||||
String oldMd5 = FileUtils.getFileMD5ToString(bootFile);
|
||||
if (!TextUtils.isEmpty(oldMd5) && oldMd5.equalsIgnoreCase(MD5)) {
|
||||
@@ -598,14 +649,25 @@ public class JGYUtils {
|
||||
} else {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("MD5", MD5);
|
||||
jsonObject.put("app_name", urlFileName);
|
||||
Utils.ariaDownload(mContext, url, jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
private static final String BOOTANIMATION_PATH = "/data/local/qchmedia/bootanimation.zip";
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
public void setBootanimation(String filePath) {
|
||||
File systemFile = new File(BOOTANIMATION_PATH);
|
||||
if (!systemFile.exists()) {
|
||||
systemFile.mkdirs();
|
||||
try {
|
||||
systemFile.createNewFile();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Log.e("setBootanimation: ", "createNewFile: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
File newFile = new File(filePath);
|
||||
if (systemFile.exists() && systemFile.isFile()) {
|
||||
String systemMD5 = FileUtils.getFileMD5ToString(systemFile);
|
||||
@@ -616,7 +678,9 @@ public class JGYUtils {
|
||||
Path path = Paths.get(newFile.getAbsolutePath());
|
||||
try {
|
||||
Files.copy(path, new FileOutputStream(systemFile));
|
||||
Log.e(TAG, "setBootanimation: 设置新开机动画");
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "setBootanimation: IOException: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@@ -626,8 +690,20 @@ public class JGYUtils {
|
||||
Files.copy(path, new FileOutputStream(systemFile));
|
||||
Log.e(TAG, "setBootanimation: 设置新开机动画");
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "setBootanimation: IOException: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeBootanimation() {
|
||||
File systemFile = new File(BOOTANIMATION_PATH);
|
||||
if (systemFile.exists()) {
|
||||
if (systemFile.delete()) {
|
||||
Log.e(TAG, "removeBootanimation: delete: " + "ture");
|
||||
}else {
|
||||
Log.e(TAG, "removeBootanimation: delete: " + "false");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user