From 3bd4a64371a99b785d256b8345a1d7d7a6f16b15 Mon Sep 17 00:00:00 2001 From: Administrator <981964879@qq.com> Date: Fri, 22 May 2020 16:48:28 +0800 Subject: [PATCH] =?UTF-8?q?update:2020.05.22=20fix:toast=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=94=A4=E9=86=92=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20add:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 15 +++-- .../com/mjsheng/myappstore/MyApplication.java | 55 ++++++++++++++++- .../myappstore/activity/MainActivity.java | 25 ++++---- .../mjsheng/myappstore/network/Network.java | 1 + .../myappstore/receiver/BootReceiver.java | 20 ++++--- .../myappstore/receiver/MyJPushReceiver.java | 23 +++----- .../myappstore/server/GuardService.java | 9 ++- .../myappstore/server/InitJpushServer.java | 35 +++++++---- .../utils/InstallResultReceiver.java | 2 +- .../myappstore/utils/SaveListUtils.java | 59 ++++++++++++++++++- .../mjsheng/myappstore/utils/ToastUtil.java | 44 +++++++++++--- 12 files changed, 223 insertions(+), 69 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f5822ae..099e8c4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { minSdkVersion 20 targetSdkVersion 29 - versionCode 131 - versionName "2.8.8"//测试jiaoguanyi.cn + versionCode 134 + versionName "2.9.1"//测试jiaoguanyi.cn // versionCode 127 // versionName "2.0.0.7"// 正式jiaoguanyi.com 双数正式 单数测试 multiDexEnabled true diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 066a606..fd56b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,9 +9,7 @@ - - - + - + + + + + + + + = Build.VERSION_CODES.O) { + //8.0之后需要在 + registerTimeReceiver(); + } } + private receiver receiver; + + //监听时间和日期变化 + public void registerTimeReceiver() { + receiver = new receiver(); + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction(Intent.ACTION_USER_PRESENT); + filter.addAction(Intent.ACTION_SCREEN_ON); + filter.addAction(Intent.ACTION_SCREEN_OFF); + filter.addAction(Intent.ACTION_USER_UNLOCKED); + registerReceiver(receiver, filter); + } + + Long time1 = 0L; + Long time2 = 0L; + + public class receiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + Log.e("fht", "receiver action:" + action); + if (action.equals(Intent.ACTION_USER_PRESENT) + || action.equals(Intent.ACTION_SCREEN_ON) + || action.equals(Intent.ACTION_SCREEN_OFF) + ) { + time2 = System.currentTimeMillis(); + if ((time2 - time1) > 60 * 1000) { + //可能会多次触发,1分钟之内不执行 + //application中启动服务,startcommand执行会两次 + startService(new Intent(context, InitJpushServer.class)); + startService(new Intent(context, GuardService.class)); + time1 = time2; + Log.e("fht", "onReceive"); + } else { + + } + + } + } + } public void onTagOperatorResult(JPushMessage jPushMessage) { if (jPushMessage == null) { 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 bbf74d8..417b1d4 100644 --- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java +++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java @@ -530,11 +530,8 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs // fromNetToUpdate(); String registrationID = JPushInterface.getRegistrationID(MainActivity.this); Log.e("mjsheng", registrationID + "------------------------"); - List list = SaveListUtils.getList(); - if (list == null) { - return; - } - LogUtils.e(list.toString() + "-----------------------------"); + SaveListUtils.getList(); + } }); } @@ -1104,6 +1101,9 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs } else { Aria.download(this).resumeAllTask(); } + case -200: + boolean qch_force_app = Settings.System.putString(MainActivity.this.getContentResolver(), "qch_force_app", "invalid"); + Log.e("fht", "qch_force_app:" + qch_force_app); break; default: LogUtils.e("getForceDownload is error:" + forceDownloadBean.getMsg()); @@ -1145,24 +1145,19 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs return; } getSelfDownload(data); - List list = SaveListUtils.getList(); - + List list = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { ForceDownloadData forceDownloadData = data.get(i); String app_package = forceDownloadData.getApp_package(); String app_url = forceDownloadData.getApp_url(); Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url); - if (data.get(i).getApp_package().equals("com.jiaoguanyi.store")) { continue;//为自身的跳过下载 } - if (list != null) { - if (!list.contains(app_package)) { - SaveListUtils.addToList(app_package); - } - } else { - SaveListUtils.addToList(app_package); + if (!list.contains(app_package)) { + list.add(app_package); } + if (!AppUtils.isAppInstalled(app_package)) { Log.e("fht ", "download URL " + app_url); // if (!SaveListUtils.isDownLoading(app_package)) { @@ -1175,6 +1170,8 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs // } } } + SaveListUtils.setList(list); + SaveListUtils.sendForceAPP(this); } private void getSelfDownload(List forceDownloadDataList) { diff --git a/app/src/main/java/com/mjsheng/myappstore/network/Network.java b/app/src/main/java/com/mjsheng/myappstore/network/Network.java index a2accb6..8f0ac0c 100644 --- a/app/src/main/java/com/mjsheng/myappstore/network/Network.java +++ b/app/src/main/java/com/mjsheng/myappstore/network/Network.java @@ -39,6 +39,7 @@ public class Network { // public static final String ROOT_URL = "http://www.as.xueshibao.com.cn/api/"; 弃用 // public static final String ROOT_URL = "https://www.jiaoguanyi.com/api/";//正式 弃用 + // public static final String ROOT_URL = "https://partner.jiaoguanyi.com/api/";//正式 // public static final String WebsocketURL = "ws://47.107.133.19:1234"; public static final String ROOT_URL = "http://www.jiaoguanyi.cn/api/";//测试 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 7bde667..67b9d82 100644 --- a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java +++ b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java @@ -17,10 +17,7 @@ public class BootReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Log.e("BootReceiver", intent.getAction()); if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { - context.startService(new Intent(context, InitJpushServer.class)); - context.startService(new Intent(context, StepService.class)); - context.startService(new Intent(context, GuardService.class)); - context.startService(new Intent(context, MyDownloadService.class)); + startService(context); } else if ( intent.getAction().equals("android.intent.action.BATTERY_CHANGED") || intent.getAction().equals("android.intent.action.BATTERY_CHANGED") @@ -33,12 +30,17 @@ public class BootReceiver extends BroadcastReceiver { || intent.getAction().equals("android.intent.action.SCREEN_ON") || intent.getAction().equals("android.intent.action.SCREEN_OFF") ) { - Log.e("fht", "BootReceiver MSG" + intent.getAction()); - context.startService(new Intent(context, InitJpushServer.class)); - context.startService(new Intent(context, StepService.class)); - context.startService(new Intent(context, GuardService.class)); - context.startService(new Intent(context, MyDownloadService.class)); + //除了USER_PRESENT应该都收不到 + Log.e("fht", "BootReceiver MSG:" + intent.getAction()); + startService(context); } } + + private void startService(Context context) { + context.startService(new Intent(context, InitJpushServer.class)); + context.startService(new Intent(context, StepService.class)); + context.startService(new Intent(context, GuardService.class)); + context.startService(new Intent(context, MyDownloadService.class)); + } } 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 25df88a..8c7d88c 100644 --- a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java +++ b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java @@ -295,19 +295,10 @@ public class MyJPushReceiver extends BroadcastReceiver { String str = jSONObject.optString("app_url"); Log.e("mymjsheng", "app_package::" + s); Log.e("mymjsheng", "app_url::" + str); - SaveListUtils.addToList(s); - List list = SaveListUtils.getList(); - if (list != null) { - if (!list.contains(s)) { - SaveListUtils.addToList(s); - } - } else { - SaveListUtils.addToList(s); - } - + SaveListUtils.addList(s); + SaveListUtils.sendForceAPP(mContext); if (!AppUtils.isAppInstalled(s)) { if (!SaveListUtils.isDownLoading(s)) { - (Aria.download(this) .load(str) .setFilePath(PathUtils.getExternalDownloadsPath() + "/ygj/" + EncryptUtils.encryptMD5ToString(s) + ".apk").setExtendField(s)) @@ -316,7 +307,6 @@ public class MyJPushReceiver extends BroadcastReceiver { } } catch (Exception e) { e.printStackTrace(); - return; } } @@ -493,7 +483,12 @@ public class MyJPushReceiver extends BroadcastReceiver { switch (message) { case MSG_DELETE: if (!TextUtils.isEmpty(title)) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (SaveListUtils.getlist().contains(title)) { + SaveListUtils.getlist().remove(title); + } + SaveListUtils.sendForceAPP(mContext); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ApkUtils.uninstall(mContext, title); } else { ApkUtils.deleteApkInSilence(title); @@ -520,7 +515,7 @@ public class MyJPushReceiver extends BroadcastReceiver { settingPowerOn(extras); break; case MSG_RESET: - Utils.doMasterClear(mContext); + Utils.doMasterClear(mContext); break; case MSG_INSTALL: // mContext.sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR")); diff --git a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java index 4ee9dc0..dc06566 100644 --- a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java +++ b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java @@ -88,11 +88,18 @@ public class GuardService extends Service implements NetStateChangeObserver { return START_STICKY; } + long time1 = 0L; + long time2 = 0L; + //在这里处理任务执行中的状态,如进度进度条的刷新 @Download.onTaskRunning protected void running(DownloadTask task) { Log.e("aria", "正在下载=--------------::" + task.getState() + "-------" + task.getPercent() + "-------" + task.getExtendField()); - ToastUtil.show("正在下载:" + task.getExtendField() + "--" + task.getPercent() + "%" + "\t" + Formatter.formatFileSize(GuardService.this, task.getSpeed()) + "/s"); + time2 = System.currentTimeMillis(); + if ((time2 - time1) > 3499) { + ToastUtil.show("正在下载:" + task.getExtendField() + "--" + task.getPercent() + "%" + "\t" + Formatter.formatFileSize(GuardService.this, task.getSpeed()) + "/s"); + time1 = time2; + } } @Download.onTaskComplete diff --git a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java index dfada9a..cefc09d 100644 --- a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java +++ b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java @@ -1,7 +1,10 @@ package com.mjsheng.myappstore.server; import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Handler; @@ -46,7 +49,9 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.concurrent.TimeUnit; import cn.jpush.android.api.JPushInterface; @@ -84,6 +89,8 @@ public class InitJpushServer extends Service { super.onCreate(); } + + @Override public int onStartCommand(Intent intent, int flags, int startId) { // 初始化 JPush @@ -91,12 +98,10 @@ public class InitJpushServer extends Service { timerImitate(); // getNetworkState(); Log.e("InitJpushServer", "onStartCommand"); - // return super.onStartCommand(intent, flags, startId); return START_STICKY; } - private void initJpush() { TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean(); tagAliasBean.action = ACTION_SET; @@ -134,7 +139,7 @@ public class InitJpushServer extends Service { //重新设置jpush - private void timerImitate() { + synchronized private void timerImitate() { Observable.timer(15000, TimeUnit.MILLISECONDS) .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread()) .subscribe(new Action1() { @@ -382,6 +387,10 @@ public class InitJpushServer extends Service { Aria.download(this).resumeAllTask(); } break; + case -200: + boolean qch_force_app = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_force_app", "invalid"); + Log.e("fht", "qch_force_app:" + qch_force_app); + break; default: LogUtils.e("getForceDownload is error:" + forceDownloadBean.getMsg()); } @@ -404,8 +413,7 @@ public class InitJpushServer extends Service { return; } getSelfDownload(data); - List list = SaveListUtils.getList(); - + List list = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { ForceDownloadData forceDownloadData = data.get(i); String app_package = forceDownloadData.getApp_package(); @@ -413,13 +421,8 @@ public class InitJpushServer extends Service { if (data.get(i).getApp_package().equals("com.jiaoguanyi.appstore")) { continue;//为自身的跳过下载 } - LogUtils.e(list); - if (list != null) { - if (!list.contains(app_package)) { - SaveListUtils.addToList(app_package); - } - } else { - SaveListUtils.addToList(app_package); + if (!list.contains(app_package)) { + list.add(app_package); } if (!AppUtils.isAppInstalled(app_package)) { if (!SaveListUtils.isDownLoading(app_package)) { @@ -432,6 +435,8 @@ public class InitJpushServer extends Service { } } } + SaveListUtils.setList(list); + SaveListUtils.sendForceAPP(this); } private void getSelfDownload(List forceDownloadDataList) { @@ -947,4 +952,10 @@ public class InitJpushServer extends Service { } + @Override + public void onDestroy() { + super.onDestroy(); + Log.e("fht", "InitJpushServer onDestroy"); + + } } diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/InstallResultReceiver.java b/app/src/main/java/com/mjsheng/myappstore/utils/InstallResultReceiver.java index c34836c..f09fd78 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/InstallResultReceiver.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/InstallResultReceiver.java @@ -52,7 +52,7 @@ public class InstallResultReceiver extends BroadcastReceiver { // Log.e("fht", SESSION_ID); // Log.e("fht", LEGACY_STATUS); // Log.e("fht", STATUS_MESSAGE); - if (STATUS_MESSAGE.equals("INSTALL_SUCCEEDED")) { + if (STATUS_MESSAGE != null && STATUS_MESSAGE.equals("INSTALL_SUCCEEDED")) { ToastUtil.show(PACKAGE_NAME + "安装成功"); } } diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/SaveListUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/SaveListUtils.java index dbfc8cf..e785a31 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/SaveListUtils.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/SaveListUtils.java @@ -8,6 +8,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Binder; import android.os.Build; +import android.provider.Settings; import android.support.v4.content.FileProvider; import android.util.Log; import android.view.View; @@ -42,17 +43,21 @@ import rx.schedulers.Schedulers; public class SaveListUtils { private static List downLoadList = new ArrayList<>(); + private static List forceList = new ArrayList<>(); public static List getList() { String data = SPStaticUtils.getString(CommonDatas.FORCE_INSTALL); Log.e("mjshenglistdata", data); - Gson gson = new Gson(); Type listType = new TypeToken>() { }.getType(); List list = gson.fromJson(data, listType); - // Log.e("mjshenglist1", list.toString()); + if (list != null && list.size() > 0) { + Log.e("fht", "getList:" + list.toString()); + } else { + list = new ArrayList<>(); + } return list; } @@ -69,6 +74,54 @@ public class SaveListUtils { String gsonData = gson.toJson(list); SPStaticUtils.put(CommonDatas.FORCE_INSTALL, gsonData); } + Log.e("fht", "addToList:" + list.toString()); + } + + public static void setList(List strings) { + forceList.clear(); + forceList = strings; + Gson gson = new Gson(); + String gsonData = gson.toJson(forceList); + SPStaticUtils.put(CommonDatas.FORCE_INSTALL, gsonData); + Log.e("fht", "setList:" + forceList.toString()); + + } + + public static void addList(String s) { + if (!forceList.contains(s)) { + forceList.add(s); + } + Log.e("fht", "addList:" + forceList.toString()); + + } + + public static void setList() { + Gson gson = new Gson(); + String gsonData = gson.toJson(forceList); + SPStaticUtils.put(CommonDatas.FORCE_INSTALL, gsonData); + } + + + public static List getlist() { + return forceList; + } + + + public static void sendForceAPP(Context context) { + String txt = ""; + for (String s : forceList) { + txt += s + ","; + } + if (txt.length() > 0) { + + txt = txt.substring(0, txt.length() - 1); + boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", txt); + Log.e("fht", "qch_force_app:" + qch_force_app + ":" + txt); + } else { + boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", "invalid"); + Log.e("fht", "qch_force_app:" + qch_force_app + ":" + txt); + } + setList(); } public static List getDownLoadList() { @@ -79,7 +132,7 @@ public class SaveListUtils { public static void addDownLoadList(String packageName) { if (downLoadList == null) { downLoadList = new ArrayList<>(); - downLoadList.add(packageName); + downLoadList.add(packageName); } else { if (!downLoadList.contains(packageName)) { downLoadList.add(packageName); diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java b/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java index d00308a..604561d 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java @@ -2,8 +2,10 @@ package com.mjsheng.myappstore.utils; import android.annotation.SuppressLint; import android.content.Context; +import android.os.Build; import android.os.Handler; import android.os.Looper; +import android.util.Log; import android.widget.Toast; import com.mjsheng.myappstore.BuildConfig; @@ -14,13 +16,15 @@ import com.mjsheng.myappstore.BuildConfig; */ public class ToastUtil { - static Handler mainHandler = new Handler(Looper.getMainLooper()); - static Toast toast; + private static Handler mainHandler = new Handler(Looper.getMainLooper()); + private static Toast toast; + private static Context mContext; @SuppressLint("ShowToast") public static void init(Context context) { - toast = Toast.makeText(context, "", Toast.LENGTH_SHORT); - debugToast = Toast.makeText(context, "", Toast.LENGTH_SHORT); + mContext = context; + toast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT); + debugToast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT); } @@ -28,12 +32,38 @@ public class ToastUtil { mainHandler.post(new Runnable() { @Override public void run() { - if (toast != null) { - toast.setText(msg); - toast.show(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + showToast(mContext, msg, Toast.LENGTH_LONG); + Log.e("fht", "LENGTH_LONG"); + + } else { + if (toast != null) { + toast.setText(msg); + toast.show(); + } } } }); + + } + + private static Toast mToast = null; + + //android 8.0以后限制 + //https://www.jianshu.com/p/d9813ad03d59 + //https://www.jianshu.com/p/050ce052b873 + public static void showToast(Context context, String text, int duration) { + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) { + Toast.makeText(context, text, duration).show(); + } else { + if (mToast == null) { + mToast = Toast.makeText(context, text, duration); + } else { + mToast.setText(text); + mToast.setDuration(duration); + } + mToast.show(); + } } // public static void showInCenter(String msg) {