diff --git a/app/build.gradle b/app/build.gradle
index 7c83740..86cb100 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,10 +15,10 @@ android {
minSdkVersion 20
targetSdkVersion 29
- versionCode 140
- versionName "3.0.1"//测试jiaoguanyi.cn
-// versionCode 1002
-// versionName "2.0.1.2"// 正式jiaoguanyi.com 双数正式 单数测试
+ versionCode 102
+ versionName "3.0.7"//测试jiaoguanyi.cn
+// versionCode 1004
+// versionName "2.0.1.4"// 正式jiaoguanyi.com 双数正式 单数测试
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e567d07..97a6b54 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -105,6 +105,7 @@
+
diff --git a/app/src/main/java/com/mjsheng/myappstore/MyApplication.java b/app/src/main/java/com/mjsheng/myappstore/MyApplication.java
index 124b4e5..4bda96e 100644
--- a/app/src/main/java/com/mjsheng/myappstore/MyApplication.java
+++ b/app/src/main/java/com/mjsheng/myappstore/MyApplication.java
@@ -329,8 +329,8 @@ public class MyApplication extends MultiDexApplication {
}
public static void setJpushTags() {
- Log.e("jiguangInterface", "30s后重新设置tags");
- Observable.timer(30000, TimeUnit.MILLISECONDS)
+ Log.e("jiguangInterface", "10s后重新设置tags");
+ Observable.timer(10000, TimeUnit.MILLISECONDS)
.observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
.subscribe(new Action1() {
@Override
@@ -394,8 +394,8 @@ public class MyApplication extends MultiDexApplication {
}
public static void setJpushAlias() {
- Log.e("jiguangInterface", "30s后重新设置alias");
- Observable.timer(30000, TimeUnit.MILLISECONDS)
+ Log.e("jiguangInterface", "10s后重新设置alias");
+ Observable.timer(10000, TimeUnit.MILLISECONDS)
.observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
.subscribe(new Action1() {
@Override
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 d2673b6..b1f33ad 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
@@ -1,18 +1,16 @@
package com.mjsheng.myappstore.activity;
-import android.app.Activity;
+import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.ContextWrapper;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.net.Uri;
import android.os.BatteryManager;
import android.os.Build;
import android.os.Bundle;
@@ -25,13 +23,14 @@ import android.os.SystemClock;
import android.provider.Settings;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
-import android.text.Layout;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
+import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.arialyy.aria.core.Aria;
@@ -45,19 +44,16 @@ import com.hjq.permissions.OnPermission;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.lzy.okgo.OkGo;
-import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okserver.download.DownloadManager;
import com.lzy.okserver.download.DownloadService;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.MyApplication;
import com.mjsheng.myappstore.R;
-import com.mjsheng.myappstore.bean.AppDateInfo;
import com.mjsheng.myappstore.bean.CommonPicBean;
import com.mjsheng.myappstore.bean.CommonPicData;
import com.mjsheng.myappstore.bean.ForceDownloadBean;
import com.mjsheng.myappstore.bean.ForceDownloadData;
-import com.mjsheng.myappstore.bean.JsonCallback;
import com.mjsheng.myappstore.bean.LzyResponse;
import com.mjsheng.myappstore.bean.NetAndLaunchBean;
import com.mjsheng.myappstore.bean.NetAndLaunchData;
@@ -76,7 +72,6 @@ import com.mjsheng.myappstore.network.api.ForceDownloadApi;
import com.mjsheng.myappstore.network.api.NetAndLaunchApi;
import com.mjsheng.myappstore.network.api.SystemSettingApi;
import com.mjsheng.myappstore.network.api.UploadAppInfoApi;
-import com.mjsheng.myappstore.server.InitJpushServer;
import com.mjsheng.myappstore.server.MyDownloadService;
import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.Configure;
@@ -90,7 +85,6 @@ import com.mjsheng.myappstore.utils.update.AllDialogShowStrategy;
import com.mjsheng.myappstore.utils.update.NotificationDownloadCreator;
import com.mjsheng.myappstore.utils.update.OkhttpCheckWorker;
import com.mjsheng.myappstore.utils.update.ToastCallback;
-import com.mjsheng.myappstore.utils.update.ToastTool;
import org.json.JSONObject;
import org.lzh.framework.updatepluginlib.UpdateBuilder;
@@ -98,17 +92,11 @@ import org.lzh.framework.updatepluginlib.UpdateBuilder;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Random;
-import java.util.Set;
import java.util.concurrent.TimeUnit;
-import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushInterface;
-import cn.jpush.android.api.JPushMessage;
-import cn.jpush.android.api.TagAliasCallback;
-import cn.jpush.android.service.JPushMessageReceiver;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@@ -119,11 +107,6 @@ import okhttp3.ResponseBody;
import rx.Observable;
import rx.functions.Action1;
-import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_ADD;
-import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_CHECK;
-import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_CLEAN;
-import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_DELETE;
-import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_GET;
import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_SET;
import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.TagAliasBean;
import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.sequence;
@@ -138,7 +121,8 @@ public class MainActivity extends AppCompatActivity {
private DownloadManager downloadManager;
private ImageView imageView;
private TextView tv_devsn, tv_devmac, tv_version;
- private TextView tv_class, tv_number, tv_name;
+ private TextView tv_batch, tv_class, tv_number, tv_name;
+ private Button bt_checkupdate;
private int DeviceInfo;
private RelativeLayout checkupdate;
private ImageView back;
@@ -181,89 +165,13 @@ public class MainActivity extends AppCompatActivity {
}
- public void onTagAliasAction(int i) {
- Set tags = null;
- String alias = null;
- int action = -1;
- boolean isAliasAction = false;
- switch (i) {
- //设置手机号码:
- case 0:
-// handleSetMobileNumber();
- return;
- //增加tag
- case 1:
-// tags = getInPutTags();
- if (tags == null) {
- return;
- }
- action = ACTION_ADD;
- break;
- //设置tag
- case 2:
-// tags = getInPutTags();
- if (tags == null) {
- return;
- }
- action = ACTION_SET;
- break;
- //删除tag
- case 3:
-// tags = getInPutTags();
- if (tags == null) {
- return;
- }
- action = ACTION_DELETE;
- break;
- //获取所有tag
- case 4:
- action = ACTION_GET;
- break;
- //清除所有tag
- case 5:
- action = ACTION_CLEAN;
- break;
- case 6:
-// tags = getInPutTags();
- if (tags == null) {
- return;
- }
- action = ACTION_CHECK;
- break;
- //设置alias
- case 7:
-// alias = getInPutAlias();
- alias = Utils.getSerial();
- if (TextUtils.isEmpty(alias)) {
- return;
- }
- isAliasAction = true;
- action = ACTION_SET;
- break;
- //获取alias
- case 8:
- isAliasAction = true;
- action = ACTION_GET;
- break;
- //删除alias
- case 9:
- isAliasAction = true;
- action = ACTION_DELETE;
- break;
- default:
- return;
- }
+ public void setAlias() {
TagAliasBean tagAliasBean = new TagAliasBean();
- tagAliasBean.action = action;
+ tagAliasBean.action = ACTION_SET;
sequence++;
- if (isAliasAction) {
- tagAliasBean.alias = alias;
- } else {
- tagAliasBean.tags = tags;
- }
- tagAliasBean.isAliasAction = isAliasAction;
+ tagAliasBean.alias = Utils.getSerial();
+ tagAliasBean.isAliasAction = true;
TagAliasOperatorHelper.getInstance().handleAction(getApplicationContext(), sequence, tagAliasBean);
-
}
@Override
@@ -346,8 +254,12 @@ public class MainActivity extends AppCompatActivity {
.execute(new StringCallback() {
@Override
public void onSuccess(String s, Call call, Response response) {
- com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
- Log.e("fht", "sendMACaddress onSuccess" + s);
+ try {
+ com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
+ Log.e("fht", "sendMACaddress onSuccess" + s);
+ } catch (Exception e) {
+ Log.e("fht", "sendMACaddress Exception" + e);
+ }
}
@Override
@@ -367,16 +279,22 @@ public class MainActivity extends AppCompatActivity {
checkupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- continuousClick(COUNTS, DURATION);
+// continuousClick(COUNTS, DURATION);
}
});
imageView = findViewById(R.id.imageView);
tv_devsn = findViewById(R.id.tv_devsn);
tv_devsn.setText(Utils.getSerial());
tv_devmac = findViewById(R.id.tv_devmac);
- tv_devmac.setText(com.blankj.utilcode.util.DeviceUtils.getMacAddress());
+ String macaddr = com.blankj.utilcode.util.DeviceUtils.getMacAddress();
+ if (macaddr.equals("")) {
+ tv_devmac.setText("获取失败");
+ } else {
+ tv_devmac.setText(macaddr);
+ }
tv_version = findViewById(R.id.version);
tv_version.setText(BuildConfig.VERSION_NAME);
+ tv_batch = findViewById(R.id.tv_batch);
tv_class = findViewById(R.id.tv_class);
tv_number = findViewById(R.id.tv_number);
tv_name = findViewById(R.id.tv_name);
@@ -391,6 +309,15 @@ public class MainActivity extends AppCompatActivity {
layout_class = findViewById(R.id.layout_class);
layout_number = findViewById(R.id.layout_number);
layout_name = findViewById(R.id.layout_name);
+
+ bt_checkupdate = findViewById(R.id.chkupd);
+ bt_checkupdate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ToastUtil.show("正在检查更新");
+ HTTPInterface.checkUpdate(mHandler, BuildConfig.APPLICATION_ID);
+ }
+ });
}
final static int COUNTS = 5;// 点击次数
@@ -440,29 +367,29 @@ public class MainActivity extends AppCompatActivity {
}
- Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 0:
- SPUtils.put(MainActivity.this, "isLogined", 0);
- setImageAndText(imageView, "设备未绑定");
- break;
- case 1:
- UserInfo userInfo = (UserInfo) msg.obj;
- SPUtils.put(MainActivity.this, "isLogined", 1);
- SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id());
- SPUtils.put(MainActivity.this, "sn_id", userInfo.getId());
- setImageAndText(imageView, "设备已绑定");
- break;
- case 2:
- SPUtils.put(MainActivity.this, "isLogined", 2);
- setImageAndText(imageView, "未经验证的设备,请联系客服");
- break;
- }
- }
- };
+// Handler handler = new Handler() {
+//// @Override
+//// public void handleMessage(Message msg) {
+//// super.handleMessage(msg);
+//// switch (msg.what) {
+//// case 0:
+//// SPUtils.put(MainActivity.this, "isLogined", 0);
+//// setImageAndText(imageView, "设备未绑定");
+//// break;
+//// case 1:
+//// UserInfo userInfo = (UserInfo) msg.obj;
+//// SPUtils.put(MainActivity.this, "isLogined", 1);
+//// SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id());
+//// SPUtils.put(MainActivity.this, "sn_id", userInfo.getId());
+//// setImageAndText(imageView, "设备已绑定");
+//// break;
+//// case 2:
+//// SPUtils.put(MainActivity.this, "isLogined", 2);
+//// setImageAndText(imageView, "未经验证的设备,请联系客服");
+//// break;
+//// }
+//// }
+//// };
private String[] permission = new String[]{
// Permission.SYSTEM_ALERT_WINDOW,
@@ -630,6 +557,7 @@ public class MainActivity extends AppCompatActivity {
private void checkUpdate() {
HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.store");
+ HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.appstore");
}
private Handler mHandler = new Handler() {
@@ -637,6 +565,9 @@ public class MainActivity extends AppCompatActivity {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
+ case 100:
+// ToastUtil.show("已是最新版本");
+ break;
case 200:
com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
installAPK(jsonObject);
@@ -648,33 +579,46 @@ public class MainActivity extends AppCompatActivity {
StudentsInfo info = com.alibaba.fastjson.JSONObject.parseObject(String.valueOf(msg.obj), StudentsInfo.class);
if (null != info) {
if (info.getBatch().equals("")) {
- tv_class.setText("暂无信息");
- layout_class.setVisibility(View.GONE);
+ tv_batch.setVisibility(View.GONE);
+ tv_batch.setText("暂无信息");
} else {
- tv_class.setText(info.getBatch());
- layout_class.setVisibility(View.VISIBLE);
-
+ tv_batch.setVisibility(View.VISIBLE);
+ tv_batch.setText(info.getBatch());
}
- if (info.getSno().equals("")) {
- tv_number.setText("暂无信息");
- layout_number.setVisibility(View.GONE);
+// try {
+ if (info.getClasses().equals("")) {
+ layout_class.setVisibility(View.GONE);
+ tv_class.setText("暂无信息");
+ } else {
+ layout_class.setVisibility(View.VISIBLE);
+ tv_class.setText(info.getClasses());
+ }
+// } catch (Exception e) {
+// Log.e("fht", e.getMessage());
+// }
+ if (info.getSno().equals("")) {
+ layout_number.setVisibility(View.GONE);
+ tv_number.setText("暂无信息");
} else {
- tv_number.setText(info.getSno());
layout_number.setVisibility(View.VISIBLE);
+ tv_number.setText(info.getSno());
}
if (info.getRealname().equals("")) {
- tv_name.setText("暂无信息");
layout_name.setVisibility(View.GONE);
+ tv_name.setText("暂无信息");
} else {
- tv_name.setText(info.getRealname());
layout_name.setVisibility(View.VISIBLE);
+ tv_name.setText(info.getRealname());
}
}
+
break;
case -2:
+ tv_batch.setText("暂无信息");
tv_class.setText("暂无信息");
tv_number.setText("暂无信息");
tv_name.setText("暂无信息");
+ tv_batch.setVisibility(View.GONE);
layout_class.setVisibility(View.GONE);
layout_number.setVisibility(View.GONE);
layout_name.setVisibility(View.GONE);
@@ -686,11 +630,11 @@ public class MainActivity extends AppCompatActivity {
};
private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
- String url = jsonObject.getString("url");
+ final String url = jsonObject.getString("url");
int versionCode = jsonObject.getInteger("version_code");
- String packageName = jsonObject.getString("package");
+ final String packageName = jsonObject.getString("package");
String app_name = jsonObject.getString("app_name");
- com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
+ final com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
object.put("app_name", app_name);
object.put("app_package", packageName);
PackageManager pm = getPackageManager();
@@ -701,13 +645,34 @@ public class MainActivity extends AppCompatActivity {
e.printStackTrace();
}
if (packageInfo == null || packageInfo.versionCode < versionCode) {
- Aria.download(this)
- .load(url) //读取下载地址
- .setFilePath(PathUtils.getExternalDownloadsPath() + "/ygj/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
- .setExtendField(object.toJSONString())
- .create(); //启动下载}
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
+ builder.setTitle("更新:");
+ builder.setMessage("检测到有新版本,是否更新?");
+ builder.setIcon(R.mipmap.ic_launcher);
+ builder.setCancelable(true);
+ //设置正面按钮
+ builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Aria.download(this)
+ .load(url) //读取下载地址
+ .setFilePath(PathUtils.getExternalDownloadsPath() + "/ygj/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
+ .setExtendField(object.toJSONString())
+ .create(); //启动下载}
+ dialog.dismiss();
+ }
+ });
+ //设置反面按钮
+ builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ builder.show();
} else {
-// ToastUtil.show("已是最新版本");
+ ToastUtil.show("已是最新版本");
Log.e("fht", "已是最新版本");
}
@@ -886,11 +851,10 @@ public class MainActivity extends AppCompatActivity {
uploadAppInfo.setInstall_time(firstInstallTime);
// Log.e("mjsheng", "------------------" + uploadAppInfo);
- if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+ if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
+ } else {
//非系统应用
appList.add(uploadAppInfo);
- } else {
-
}
@@ -936,7 +900,7 @@ public class MainActivity extends AppCompatActivity {
private void initJpush() {
JPushInterface.init(this);
- onTagAliasAction(7);
+ setAlias();
String rid = JPushInterface.getRegistrationID(getApplicationContext());
if (!rid.isEmpty()) {
// ToastUtil.debugShow("RegId:" + rid);
@@ -1014,7 +978,7 @@ public class MainActivity extends AppCompatActivity {
}
}
- private void getAppLimitApi() {
+ private void getAppLimitApi() {
AppLimitApi appLimitApi = Network.getAppLimitApi();
appLimitApi.getAppLimitApi(Configure.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
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 c260ab2..b89d087 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
@@ -571,8 +571,22 @@ public class HTTPInterface {
PackageManager pm = context.getPackageManager();
for (String pack : newList) {
pm.setApplicationEnabledSetting(pack, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
+ Log.e("setHideDesktopIcon", pack);
}
}
+ } else {
+ //测试
+// List newList=new ArrayList<>();
+// PackageManager pm = context.getPackageManager();
+// newList.add("com.android.quicksearchbox");
+// newList.add("com.android.calendar");
+// newList.add("com.android.dreams.basic");
+// newList.add("com.android.musicfx");
+// newList.add("com.android.email");
+// for (String pack : newList) {
+// pm.setApplicationEnabledSetting(pack, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);
+// Log.e("setHideDesktopIcon", pack);
+// }
}
} catch (Exception e) {
Log.e("fht", "setHideDesktopIcon" + e.getMessage());
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 e45ef4c..140dd02 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
@@ -25,10 +25,12 @@ public class BootReceiver extends BroadcastReceiver {
|| intent.getAction().equals("android.intent.action.BATTERY_OKAY")
|| intent.getAction().equals("android.intent.action.ACTION_POWER_CONNECTED")
|| intent.getAction().equals("android.intent.action.DATE_CHANGED")
+ || intent.getAction().equals("android.intent.action.LOCALE_CHANGED")
|| intent.getAction().equals("android.intent.action.TIME_TICK")
|| intent.getAction().equals("android.intent.action.USER_PRESENT")
|| intent.getAction().equals("android.intent.action.SCREEN_ON")
|| intent.getAction().equals("android.intent.action.SCREEN_OFF")
+
) {
//除了USER_PRESENT应该都收不到
Log.e("fht", "BootReceiver MSG:" + intent.getAction());
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 3efd014..ece5e6a 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
@@ -140,11 +140,9 @@ public class NewAppReceiver extends BroadcastReceiver {
uploadAppInfo.setInstall_time(firstInstallTime);
- if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
- //非系统应用
- appList.add(uploadAppInfo);
+ if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
} else {
-
+ appList.add(uploadAppInfo);
}
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 0457370..e6a05f5 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
@@ -1,11 +1,7 @@
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.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
@@ -18,7 +14,6 @@ import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.arialyy.aria.core.Aria;
-import com.blankj.utilcode.util.AppUtils;
import com.blankj.utilcode.util.EncryptUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.PathUtils;
@@ -27,7 +22,6 @@ import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.MyApplication;
-import com.mjsheng.myappstore.activity.MainActivity;
import com.mjsheng.myappstore.bean.ForceDownloadBean;
import com.mjsheng.myappstore.bean.ForceDownloadData;
import com.mjsheng.myappstore.bean.NetAndLaunchBean;
@@ -52,11 +46,9 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Objects;
import java.util.concurrent.TimeUnit;
import cn.jpush.android.api.JPushInterface;
@@ -82,6 +74,7 @@ import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.sequence;
*/
public class InitJpushServer extends Service {
+
@Nullable
@Override
public IBinder onBind(Intent intent) {
@@ -92,12 +85,12 @@ public class InitJpushServer extends Service {
public void onCreate() {
Log.e("InitJpushServer", "onCreate");
super.onCreate();
+// android.os.Debug.waitForDebugger();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
-
getAppLimitApi();//获取可以写入的app包名
HTTPInterface.getNetAndLaunchSetting(this);
timerImitate();
@@ -315,14 +308,24 @@ public class InitJpushServer extends Service {
deleteOtherApp(result);
}
+
+
private void deleteOtherApp(String packageList) {
Log.e("deleteOtherApp", "packageList:" + packageList);
String[] result = packageList.split(",");
List resultList = new ArrayList<>(Arrays.asList(result));
List packageLists = ApkUtils.queryFilterAppInfo(InitJpushServer.this);
+
Log.e("deleteOtherApp", "packageLists:" + packageLists.toString());
if (resultList.size() > 0) {
for (final String packageName : packageLists) {
+ if (Utils.isSystemApp(InitJpushServer.this, packageName)) {
+ Log.e("deleteOtherApp", "is systemApp:" + packageName);
+ continue;
+ }
+ if (ApkUtils.canremove_systemapp.contains(packageName)) {
+ continue;
+ }
if (!resultList.contains(packageName)) {
new Thread(new Runnable() {
@Override
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 291d3d3..5893694 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
@@ -7,7 +7,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
@@ -19,33 +18,22 @@ import android.widget.Toast;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.R;
-import com.mjsheng.myappstore.utils.update.ToastTool;
import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
-import java.lang.annotation.ElementType;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.nio.ByteBuffer;
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;
-import javax.crypto.interfaces.PBEKey;
-
-import cn.jpush.android.api.PushNotificationBuilder;
import rx.Observable;
import rx.Observer;
import rx.Subscriber;
@@ -584,64 +572,57 @@ public class ApkUtils {
// 查询所有已经安装的应用程序
List appInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的
List applicationInfos = new ArrayList<>();
-
- // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
- Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
- resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
-
- // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
- List resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
- Set allowPackages = new HashSet();
- for (ResolveInfo resolveInfo : resolveinfoList) {
- allowPackages.add(resolveInfo.activityInfo.packageName);
- }
-
for (ApplicationInfo app : appInfos) {
- if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)//通过flag排除系统应用,会将电话、短信也排除掉
- {
+// Log.e("queryFilterAppInfo", String.valueOf(app.flags));
+// Log.e("queryFilterAppInfo", String.valueOf((app.flags & mask)));
+ if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
+ //通过flag排除系统应用,会将电话、短信也排除掉
+ } else {
applicationInfos.add(app.packageName);
+ Log.e("queryFilterAppInfo", app.packageName);
}
-// if(app.uid > 10000){//通过uid排除系统应用,在一些手机上效果不好
-// applicationInfos.add(app);
-// }
}
return applicationInfos;
}
- public static List showAllAPP(Context context) {
+ public static List canremove_systemapp = new ArrayList() {{
+ //预置的可以卸载的系统应用,判断出来为第三方
+ this.add("com.android.quicksearchbox");
+ this.add("com.android.calendar");
+ this.add("com.android.dreams.basic");
+ this.add("com.android.musicfx");
+ this.add("com.android.email");
+ }};
+ public static List systemapp = new ArrayList() {{
+ //需要管控的系统应用
+ this.add("com.android.gallery3d");
+ this.add("com.android.deskclock");
+ this.add("com.android.music");
+ this.add("com.mediatek.camera");
+ this.add("com.android.documentsui");
+ this.add("com.android.soundrecorder");
+ this.add("com.android.browser");
+ }};
+
+
+ public static void showAllAPP(Context context) {
PackageManager pm = context.getPackageManager();
// 查询所有已经安装的应用程序
- List appInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的
-
- List packageList = new ArrayList<>();
-
- // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
- Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
- resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
-
- // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
- List resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
- Set allowPackages = new HashSet();
- for (ResolveInfo resolveInfo : resolveinfoList) {
- allowPackages.add(resolveInfo.activityInfo.packageName);
+ List packages = pm.getInstalledPackages(0);
+ for (PackageInfo packageInfo : packages) {
+ if (ApkUtils.canremove_systemapp.contains(packageInfo.packageName)) {
+ continue;
+ }
+ if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1
+ && !systemapp.contains(packageInfo.packageName)
+ ) {
+ } else {
+ Log.e("showAllAPP", "packageName:" + packageInfo.applicationInfo.packageName);
+ pm.setApplicationEnabledSetting(packageInfo.applicationInfo.packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);
+ }
}
- for (ApplicationInfo app : appInfos) {
-// if((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)//通过flag排除系统应用,会将电话、短信也排除掉
-// {
-// applicationInfos.add(app);
-// }
-// if(app.uid > 10000){//通过uid排除系统应用,在一些手机上效果不好
-// applicationInfos.add(app);
-// }
-// if (allowPackages.contains(app.packageName) && !Arrays.asList(excludePackageName).contains(app.packageName)) {
-// if (allowPackages.contains(app.packageName)) {
-// packageList.add(app.packageName);
-// }
- pm.setApplicationEnabledSetting(app.packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);
- }
- return packageList;
}
@@ -661,4 +642,25 @@ public class ApkUtils {
}
}
}
+
+
+ public static boolean isSystemApp(Context context, String pkg) {
+ try {
+ PackageInfo packageInfo = context.getPackageManager().getPackageInfo(pkg, 0);
+ if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
+ if (pkg.equals(context.getPackageName())) {
+ return true;
+ } else {
+ //第三方应用
+ return false;
+ }
+ } else {
+ //系统应用
+ return true;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ return true;
+ }
+ }
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/AppsManagerUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/AppsManagerUtils.java
index 6f1143b..0656ae0 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/AppsManagerUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/AppsManagerUtils.java
@@ -128,7 +128,8 @@ public class AppsManagerUtils {
public static boolean isSystemApp(Context context, String pkg) {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(pkg, 0);
- if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
+ int mask = ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
+ if ((packageInfo.applicationInfo.flags & mask) == 0) {
if (pkg.equals(context.getPackageName())) {
return true;
} else {
diff --git a/app/src/main/res/drawable/bt_checkupdate_normnl.xml b/app/src/main/res/drawable/bt_checkupdate_normnl.xml
new file mode 100644
index 0000000..a0f5a65
--- /dev/null
+++ b/app/src/main/res/drawable/bt_checkupdate_normnl.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bt_checkupdate_pressed.xml b/app/src/main/res/drawable/bt_checkupdate_pressed.xml
new file mode 100644
index 0000000..3a8bd0d
--- /dev/null
+++ b/app/src/main/res/drawable/bt_checkupdate_pressed.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bt_checkupdate_selector.xml b/app/src/main/res/drawable/bt_checkupdate_selector.xml
new file mode 100644
index 0000000..7139d84
--- /dev/null
+++ b/app/src/main/res/drawable/bt_checkupdate_selector.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml
index 2842f1d..12d6239 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/activity_main.xml
@@ -23,7 +23,7 @@
android:gravity="center_horizontal"
android:text="我的设备"
android:textColor="#000000"
- android:textSize="@dimen/sp_16"
+ android:textSize="@dimen/sp_14"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -54,241 +54,261 @@
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bannerLayout"
- app:layout_constraintVertical_bias="0.05">
+ app:layout_constraintVertical_bias="0.05">
-
-
-
-
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="@dimen/dp_150"
+ android:layout_marginTop="12dp"
+ android:layout_marginRight="@dimen/dp_150"
+ android:orientation="vertical"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tv_batch">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:textSize="@dimen/sp_12"
+ android:visibility="gone"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/imageView" />
+
-
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:background="@drawable/bt_checkupdate_selector"
+ android:stateListAnimator="@null"
+ android:text="检查更新"
+ android:textColor="@color/white"
+ android:textSize="@dimen/sp_12"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/linearLayout" />
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml
index a5854f9..b023136 100644
--- a/app/src/main/res/layout-port/activity_main.xml
+++ b/app/src/main/res/layout-port/activity_main.xml
@@ -24,7 +24,7 @@
android:gravity="center_horizontal"
android:text="我的设备"
android:textColor="#000000"
- android:textSize="@dimen/sp_16"
+ android:textSize="@dimen/sp_14"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -45,8 +45,8 @@
+ app:layout_constraintVertical_bias="0.096">
+
+
+ app:layout_constraintTop_toBottomOf="@+id/tv_batch">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 13535a9..540c0e6 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -45,5 +45,7 @@
#ff797979
#55b68a
#8f82bc
+ #00A0E9
+ #047AAF
\ No newline at end of file