diff --git a/app/build.gradle b/app/build.gradle
index 76be20b..5447c4c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,7 +1,7 @@
apply plugin: 'com.android.application'
def appName() {
- return "应用市场"
+ return "设备信息"
}
def releaseTime() {
@@ -16,8 +16,8 @@ android {
targetSdkVersion 26
// versionCode 85
// versionName "2.0.4.6"//正式jiaoguanyi.com
- versionCode 86
- versionName "2.4.8"//测试jiaoguanyi.cn
+ versionCode 93
+ versionName "2.5.5"//测试jiaoguanyi.cn
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
packagingOptions {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bca35f8..9876aeb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,7 +29,6 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">
@@ -158,7 +157,9 @@
android:value="20f70bbeb78bad23eddd08d0" />
-
+
fileList = new ArrayList<>();
+
+
+ static String packageName = "";
+
+ public void setInstallIngPackageName(String packageNames) {
+ packageName = packageNames;
+ Log.e("fht", "正在安装:" + packageNames);
+ }
+
+ public String getInstallIngPackageName() {
+ return packageName;
+ }
+
+ public void addFileData(FileData data) {
+ fileList.add(data);
+ updateList();
+ }
+
+ public void removeDate(String packageName) {
+ if (fileList != null && fileList.size() > 0) {
+ for (FileData data : fileList) {
+ if (data.getPackageName().equals(packageName)) {
+ fileList.remove(data);
+ break;
+ } else {
+ Log.e("fht", "not found object");
+ }
+ }
+ }
+ setInstallIngPackageName("");
+ if (fileList.size() > 0) {
+ updateList();
+ } else {
+ Log.e("fht", "fileList为空");
+ setInstallIngPackageName("");
+ }
+
+ }
+
+ public void updateList() {
+ if (getInstallIngPackageName().equals("") || ApkUtils.isAvailable(getAppContext(), packageName)) {
+ if (fileList != null && fileList.size() > 0) {
+ if (!fileList.get(0).getPackageName().equals("") || ApkUtils.isAvailable(getAppContext(), fileList.get(0).getPackageName())) {
+ String s = packageName;
+ ApkUtils.installApp(this, fileList.get(0).getFilePath());
+ setInstallIngPackageName(fileList.get(0).getPackageName());
+ } else {
+ removeDate(fileList.get(0).getPackageName());
+ Log.e("fht", "已安装");
+ setInstallIngPackageName("");
+ }
+ } else {
+ Log.e("fht", "任务为空");
+ }
+ } else {
+ Log.e("fht", "安装中:" + packageName);
+
+ }
+ }
}
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 e1dd8c5..4788544 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
@@ -8,6 +8,7 @@ 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.os.BatteryManager;
@@ -37,13 +38,19 @@ 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.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;
import com.mjsheng.myappstore.bean.UploadAppInfo;
@@ -52,6 +59,7 @@ import com.mjsheng.myappstore.comm.CommonDatas;
import com.mjsheng.myappstore.network.HTTPInterface;
import com.mjsheng.myappstore.network.Network;
import com.mjsheng.myappstore.network.api.AppLimitApi;
+import com.mjsheng.myappstore.network.api.BrankPicApi;
import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
import com.mjsheng.myappstore.network.api.DeselectIDApi;
import com.mjsheng.myappstore.network.api.ForceDownloadApi;
@@ -70,6 +78,7 @@ 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 com.tianma.netdetector.lib.NetStateChangeObserver;
import com.tianma.netdetector.lib.NetworkType;
@@ -79,6 +88,7 @@ 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.Set;
import java.util.concurrent.TimeUnit;
@@ -106,7 +116,7 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
private DownloadManager downloadManager;
public static boolean isForeground = false;
private ImageView imageView;
- private TextView tv_devsn, tv_devmac, tv_version;
+ private TextView tv_devsn, tv_devmac, tv_version;
private int DeviceInfo;
@Override
@@ -143,7 +153,7 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
// }
requestPermission();
registerMessageReceiver(); // used for receive msg
- HTTPInterface.checkDevicesInfo(handler);
+// HTTPInterface.checkDevicesInfo(handler);
startService(new Intent(MainActivity.this, MyDownloadService.class));
Aria.get(this).getDownloadConfig().setMaxTaskNum(1);
@@ -162,7 +172,6 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
sendBroadcast(allIntent);
-
}
@@ -172,18 +181,19 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
.params("sn", Utils.getSerial())
.params("mac", com.blankj.utilcode.util.DeviceUtils.getMacAddress())
.params("jpush_id", rid)
+ .params("appstore_version", Utils.getProperty("ro.custom.build.version","获取失败"))
+ .params("store_version", BuildConfig.VERSION_NAME)
.execute(new StringCallback() {
@Override
public void onSuccess(String s, Call call, Response response) {
com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
- int code = msgObject.getInteger("code");
- Log.e("sendMACaddress", msgObject.getString("msg"));
+ Log.e("fht", "sendMACaddress onSuccess"+s);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
- Log.e("sendMACaddress", e.getMessage());
+ Log.e("fht", "sendMACaddress onError:"+e.getMessage());
}
});
@@ -195,9 +205,9 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
private void initView() {
imageView = findViewById(R.id.imageView);
tv_devsn = findViewById(R.id.tv_devsn);
- tv_devsn.setText("设备SN:" + Utils.getSerial());
+ tv_devsn.setText("设备SN\t\t" + Utils.getSerial());
tv_devmac = findViewById(R.id.tv_devmac);
- tv_devmac.setText("设备MAC:" + com.blankj.utilcode.util.DeviceUtils.getMacAddress());
+ tv_devmac.setText("MAC地址\t\t" + com.blankj.utilcode.util.DeviceUtils.getMacAddress());
tv_version = findViewById(R.id.version);
tv_version.setText("版本:" + BuildConfig.VERSION_NAME);
}
@@ -206,6 +216,7 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
Log.e("mjhsneg", "gagagag--------------------------" + Utils.getSerial());
getLockedState();
initJpush();//初始化极光推送
+ setJpushTags();
// update();//接口更新app
sendMACaddress();
@@ -231,52 +242,6 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
}
- private String getGrade(String grade) {
- String s;
- switch (grade) {
- case "1":
- s = "一年级";
- break;
- case "2":
- s = "二年级";
- break;
- case "3":
- s = "三年级";
- break;
- case "4":
- s = "四年级";
- break;
- case "5":
- s = "五年级";
- break;
- case "6":
- s = "六年级";
- break;
- case "7":
- s = "初一";
- break;
- case "8":
- s = "初二";
- break;
- case "9":
- s = "初三";
- break;
- case "10":
- s = "高一";
- break;
- case "11":
- s = "高二";
- break;
- case "12":
- s = "高三";
- break;
- default:
- s = "一年级";
- break;
- }
- return s;
- }
-
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -441,6 +406,7 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
Aria.download(this).resumeAllTask();
getForceDownload();//强制下载apk
resetDevice();//恢复出厂设置
+ checkUpdate();//更新app
// fromNetToUpdate();
String registrationID = JPushInterface.getRegistrationID(MainActivity.this);
Log.e("mjsheng", registrationID + "------------------------");
@@ -462,6 +428,49 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
}
}
+ private void checkUpdate() {
+ HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.store");
+ }
+
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what) {
+ case 200:
+ com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
+ installAPK(jsonObject);
+ break;
+ case -200:
+ Log.e("fht", "no update");
+ }
+ }
+
+ };
+
+ private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
+ String url = jsonObject.getString("url");
+ int versionCode = jsonObject.getInteger("version_code");
+ String packageName = jsonObject.getString("package");
+ PackageManager pm = getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo == null || packageInfo.versionCode != versionCode) {
+ Aria.download(this)
+ .load(url) //读取下载地址
+ .setFilePath(PathUtils.getExternalDownloadsPath() + "/ygj/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
+ .setExtendField(packageName)
+ .start(); //启动下载}
+ } else {
+ Log.e("fht", "无需更新");
+ }
+
+ }
+
private int getBatteryLevel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
@@ -488,8 +497,93 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
Intent allIntent = new Intent();
allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
sendBroadcast(allIntent);
+ loadHeadImg(Configure.HTTP_TAG_HOME_PAGE_URL);
+
+
+ lazyLoading();
+
}
+ private void loadHeadImg(String URL) {
+ BrankPicApi brankPicApi = Network.getBrankPicApi();
+ brankPicApi.getBrankPicApi(Configure.HTTP_KEY, Utils.getSerial(), "1")
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(CommonPicBean projectPicBean) {
+ paraData(projectPicBean);
+ Log.e("mjsheng", "brankPicApi---" + projectPicBean.toString());
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Utils.showToast(getApplicationContext(), "网络出错!");
+ Log.e("mjsheng", "brankPicApi---error----" + e.getMessage());
+
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+
+
+ }
+
+ private void paraData(CommonPicBean categoryPicBean) {
+ int code = categoryPicBean.getCode();
+ switch (code) {
+ case 200:
+ final List data = categoryPicBean.getData();
+// if (data != null && data.size() > 0) {
+// List list = new ArrayList<>();
+// for (int i = 0; i < data.size(); i++) {
+// list.add(data.get(i).getImg());
+// }
+// webBannerAdapter = new WebBannerAdapter(getActivity(), list);
+// webBannerAdapter.setOnBannerItemClickListener(new BannerLayout.OnBannerItemClickListener() {
+// @Override
+// public void onItemClick(int position) {
+// loadProjectByType(Configure.HTTP_TAG_BRAND_DETAILS_URL, data.get(position).getId(), data.get(position).getName());
+// }
+// });
+// recyclerBanner.setAdapter(webBannerAdapter);
+// mAdapter = new TopRecyclerViewAdapter(getActivity(), "home", list, new TopRecyclerViewAdapter.HorizontalScrollViewListener() {
+// @Override
+// public void onClick(String iconUrl, int position) {
+// sound.playSoundEffect();
+// loadProjectByType(Configure.HTTP_TAG_BRAND_DETAILS_URL, data.get(position).getId(), data.get(position).getName());
+// }
+// });
+// mTopRlView.setAdapter(mAdapter);
+// } else {
+// // Utils.showToast(getContext(), "数据为空!");
+// Log.e("mjsheng", "推荐页轮播图为空!");
+// }
+ break;
+ case -200:
+ paraError(categoryPicBean.getMsg());
+ break;
+ }
+ }
+
+ private void paraError(String msg) {
+ switch (msg) {
+ case "没有找到SN码":
+ Utils.showToast(getApplicationContext(), msg);
+ break;
+ default:
+ Utils.showToast(getApplicationContext(), msg);
+ break;
+ }
+ }
@Override
protected void onDestroy() {
@@ -563,6 +657,57 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
});
}
+ private void setJpushTags() {
+ OkGo.get(Configure.GET_DEVICES_TAGS)
+ .params("sn", Utils.getSerial())
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, Response response) {
+ Log.e("fht", s);
+ com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(s);
+ int code = jsonObject.getInteger("code");
+ com.alibaba.fastjson.JSONObject data = jsonObject.getJSONObject("data");
+ if (code == 200) {
+ String batch = data.getString("batch");
+ if (batch != null && !batch.equals("")) {
+ Set set = new HashSet();
+ set.add(batch);
+ JPushInterface.setTags(MainActivity.this, set, new TagAliasCallback() {
+ @Override
+ public void gotResult(int i, String s, Set set) {
+ if (set == null) {
+ Log.e("initmjsheng", "set is null");
+ } else {
+ Log.e("initmjsheng", "set ---" + set.toString());
+ }
+ Log.e("JPushInterface", s + "---" + i + "---");
+ if (i == 0) {
+ Log.e("JPushInterface", "Tag绑定成功");
+ } else if (i == 6001) {
+ Log.e("JPushInterface", "无效的设置,用户名为空");
+ } else if (i == 6002) {
+ Log.e("JPushInterface", "设置超时,请重试");
+ timerImitate();
+ } else if (i == 6011) {
+ Log.e("JPushInterface", "短时间内操作过于频繁");
+ } else if (i == 996) {
+ Log.e("JPushInterface", "网络连接断开");
+ timerImitate();
+ }
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public void onError(Call call, Response response, Exception e) {
+ super.onError(call, response, e);
+ Log.e("fht", e.getMessage());
+ }
+ });
+ }
+
private void initJpush() {
JPushInterface.setAlias(this, Utils.getSerial(), new TagAliasCallback() {
@@ -600,6 +745,8 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
public void call(Long aLong) {
Log.e("JPushInterface", "JPushInterface重新加载");
initJpush();
+ setJpushTags();
+
}
});
}
@@ -1159,22 +1306,11 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
//状态栏显示开关
int setting_statusbar = changeNum(data.optInt("setting_statusbar"));
- boolean qch_hide_statusBar = Settings.System.putInt(getContentResolver(), "qch_hide_statusBar", setting_statusbar);
- Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
-
- String statusbarStatus = "";
- switch (setting_statusbar) {
- case 0:
- statusbarStatus = "qch_show_statusBar";
- break;
- case 1:
- statusbarStatus = "qch_hide_statusBar";
- break;
-
+ int oldNum = Settings.System.getInt(mContext.getContentResolver(), "qch_hide_statusBar", 1);
+ if (oldNum != setting_statusbar) {
+ boolean qch_hide_statusBar = Settings.System.putInt(mContext.getContentResolver(), "qch_hide_statusBar", setting_statusbar);
+ Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
}
- Intent statusIntent = new Intent(statusbarStatus);
- sendBroadcast(statusIntent);
-
//摄像头开关
int setting_camera = changeNum(data.optInt("setting_camera"));
Log.e("SystemSetting", "setting_camera---------" + setting_camera);
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/FileData.java b/app/src/main/java/com/mjsheng/myappstore/bean/FileData.java
new file mode 100644
index 0000000..60c73bd
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/FileData.java
@@ -0,0 +1,29 @@
+package com.mjsheng.myappstore.bean;
+
+import java.io.Serializable;
+
+public class FileData implements Serializable {
+ private String filePath;
+ private String packageName;
+
+ public FileData(String f, String p) {
+ this.filePath = f;
+ this.packageName = p;
+ }
+
+ public String getFilePath() {
+ return filePath;
+ }
+
+ public void setFilePath(String filePath) {
+ this.filePath = filePath;
+ }
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ public void setPackageName(String packageName) {
+ this.packageName = packageName;
+ }
+}
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 2dfb7f9..fa77764 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
@@ -11,11 +11,13 @@ import android.util.Log;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.LogUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.mjsheng.myappstore.bean.UserInfo;
+import com.mjsheng.myappstore.utils.Configure;
import com.mjsheng.myappstore.utils.SPUtils;
import com.mjsheng.myappstore.utils.ToastUtil;
import com.mjsheng.myappstore.utils.Utils;
@@ -61,7 +63,6 @@ public class HTTPInterface {
}
-
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
@@ -69,7 +70,7 @@ public class HTTPInterface {
}
-
+
});
}
@@ -109,6 +110,7 @@ public class HTTPInterface {
Log.e("checkDevicesInfo", ex.getMessage());
}
}
+
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
@@ -155,6 +157,7 @@ public class HTTPInterface {
Log.e("checkUpdateByPackage", e.getMessage());
}
}
+
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
@@ -175,7 +178,7 @@ public class HTTPInterface {
int code = object.getInteger("code");
String msg = object.getString("msg");
LogUtils.e("setAppinstallInfo", msg);
- if (code ==200) {
+ if (code == 200) {
} else {
@@ -239,5 +242,34 @@ public class HTTPInterface {
});
}
+ synchronized public static void checkUpdate(final Handler handler, String packageName) {
+
+ OkGo.post(Configure.CHECK_UPDATE)
+ .params("package", packageName)
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, okhttp3.Response response) {
+ JSONObject jsonObject = JSON.parseObject(s);
+ int code = jsonObject.getInteger("code");
+ String msg = jsonObject.getString("msg");
+ Message message = new Message();
+ if (code == 200) {
+ JSONObject jsonArray = JSON.parseObject(jsonObject.getString("data"));
+ message.what = code;
+ message.obj = jsonArray;
+ handler.sendMessage(message);
+ } else if (code == -200) {
+ handler.sendEmptyMessage(-200);
+ }
+ }
+
+ @Override
+ public void onError(Call call, Response response, Exception e) {
+ super.onError(call, response, e);
+ Log.e("onError", e.getMessage());
+
+ }
+ });
+ }
}
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 e576fc4..26300f2 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
@@ -74,6 +74,8 @@ public class MyJPushReceiver extends BroadcastReceiver {
private final String GET_APP_USEDTIME = "13";
+ private final String GET_FORCEDOWNLOADURL = "14";
+
private Context mContext;
@@ -111,21 +113,21 @@ public class MyJPushReceiver extends BroadcastReceiver {
boolean qch_usb_choose = Settings.System.putString(mContext.getContentResolver(), "qch_usb_choose", setting_usb);
Log.e("SystemSetting", "qch_usb_choose---------" + setting_usb);
Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose);
- String usbStatus = "";
- switch (setting_usb) {
- case "usb_charge":
- usbStatus = "qch_action_usb_usb_charge";
- break;
- case "usb_mtp":
- usbStatus = "qch_action_usb_usb_mtp";
- break;
- case "usb_midi":
- usbStatus = "qch_action_usb_usb_midi";
- break;
+ String usbStatus = "";
+ switch (setting_usb) {
+ case "usb_charge":
+ usbStatus = "qch_action_usb_usb_charge";
+ break;
+ case "usb_mtp":
+ usbStatus = "qch_action_usb_usb_mtp";
+ break;
+ case "usb_midi":
+ usbStatus = "qch_action_usb_usb_midi";
+ break;
- }
- Intent usbIntent = new Intent(usbStatus);
- mContext.sendBroadcast(usbIntent);
+ }
+ Intent usbIntent = new Intent(usbStatus);
+ mContext.sendBroadcast(usbIntent);
}
int setting_bluetooth = changeNum(data.optInt("setting_bluetooth"));
@@ -156,23 +158,11 @@ public class MyJPushReceiver extends BroadcastReceiver {
//状态栏显示开关
int setting_statusbar = changeNum(data.optInt("setting_statusbar"));
- boolean qch_hide_statusBar = Settings.System.putInt(mContext.getContentResolver(), "qch_hide_statusBar", setting_statusbar);
- Log.e("SystemSetting", "qch_hide_statusBar---------" + setting_statusbar);
- Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
-
- String statusbarStatus = "";
- switch (setting_statusbar) {
- case 0:
- statusbarStatus = "qch_show_statusBar";
- break;
- case 1:
- statusbarStatus = "qch_hide_statusBar";
- break;
-
+ int oldNum = Settings.System.getInt(mContext.getContentResolver(), "qch_hide_statusBar", 1);
+ if (oldNum != setting_statusbar) {
+ boolean qch_hide_statusBar = Settings.System.putInt(mContext.getContentResolver(), "qch_hide_statusBar", setting_statusbar);
+ Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
}
- Intent statusIntent = new Intent(statusbarStatus);
- mContext.sendBroadcast(statusIntent);
-
//摄像头开关
int setting_camera = changeNum(data.optInt("setting_camera"));
Log.e("SystemSetting", "setting_camera---------" + setting_camera);
@@ -512,7 +502,16 @@ public class MyJPushReceiver extends BroadcastReceiver {
String sendType = jsonObject.getString("type");
MyApplication.sendAppUsedTime(random, sendType);
break;
-
+ case GET_FORCEDOWNLOADURL:
+ com.alibaba.fastjson.JSONObject URI = JSON.parseObject(extras);
+ String versionCode = URI.getString("version_code");
+ String url = URI.getString("url");
+ Aria.download(this)
+ .load(url) //读取下载地址
+ .setFilePath(PathUtils.getExternalDownloadsPath() + "/ygj/" + EncryptUtils.encryptMD5ToString("com.jiaoguanyi.store") + ".apk", true)
+ .setExtendField("com.jiaoguanyi.store")
+ .start(); //启动下载}
+ break;
}
}
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 98c71ae..7f38ce2 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java
@@ -10,6 +10,7 @@ import android.util.Log;
import com.google.gson.Gson;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
+import com.mjsheng.myappstore.MyApplication;
import com.mjsheng.myappstore.bean.AppData;
import com.mjsheng.myappstore.bean.UploadAppInfo;
import com.mjsheng.myappstore.network.Network;
@@ -45,24 +46,24 @@ public class NewAppReceiver extends BroadcastReceiver {
allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
context.sendBroadcast(allIntent);
String packageName = intent.getDataString().replace("package:", "");
- ApkUtils.removeInfo(packageName);
+ MyApplication.getInstance().removeDate(packageName);
Log.e(TAG, "安装了:" + packageName + "包名的程序");
Log.e("fht", "安装了:" + packageName + "包名的程序");
OkGo.post(Configure.HTTP_TAG_DOWNLOAD_URL)
- .params("key", Configure.HTTP_KEY)
- .params("sn", Utils.getSerial())
- .params("package", packageName)
- .tag(this)
- .execute(new StringCallback() {
- @Override
- public void onSuccess(String s, Call call, Response response) {
+ .params("key", Configure.HTTP_KEY)
+ .params("sn", Utils.getSerial())
+ .params("package", packageName)
+ .tag(this)
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, Response response) {
- }
- });
+ }
+ });
SaveListUtils.getDownLoadList().remove(packageName);//移除下载列表
// ToastTool.show("安装成功");
- if (!packageName.equals(Utils.YOUNGSYSTEM_APP_TONGBU) && !packageName.equals(context.getPackageName())){
- updateUserApp(context,packageName);
+ if (!packageName.equals(Utils.YOUNGSYSTEM_APP_TONGBU) && !packageName.equals(context.getPackageName())) {
+ updateUserApp(context, packageName);
}
// 下载管理服务 删除对应任务
Intent msgIntent = new Intent(Utils.DOWNLOAD_DELETE_PACKAGENAME_ACTION);
@@ -70,9 +71,9 @@ public class NewAppReceiver extends BroadcastReceiver {
context.sendBroadcast(msgIntent);
Intent intent1 = new Intent();
- if (action.equals(Intent.ACTION_PACKAGE_ADDED)){
+ if (action.equals(Intent.ACTION_PACKAGE_ADDED)) {
intent1.setAction(Utils.ACTION_PACKAGE_ADDED);
- }else {
+ } else {
intent1.setAction(Utils.ACTION_PACKAGE_REPLACED);
}
intent1.putExtra("packageName", packageName);
@@ -84,11 +85,11 @@ public class NewAppReceiver extends BroadcastReceiver {
String packageName = intent.getDataString().replace("package:", "");
Log.e(TAG, "卸载了:" + packageName + "包名的程序");
- if (!packageName.equals(Utils.YOUNGSYSTEM_APP_TONGBU) && !packageName.equals(context.getPackageName())){
- deletedateUserApp(context,packageName);
+ if (!packageName.equals(Utils.YOUNGSYSTEM_APP_TONGBU) && !packageName.equals(context.getPackageName())) {
+ deletedateUserApp(context, packageName);
}
Intent intent1 = new Intent();
- intent1.setAction(Utils.ACTION_PACKAGE_REMOVED);
+ intent1.setAction(Utils.ACTION_PACKAGE_REMOVED);
intent1.putExtra("packageName", packageName);
context.sendBroadcast(intent1);
getAppInfo(context);
@@ -164,7 +165,7 @@ public class NewAppReceiver extends BroadcastReceiver {
@Override
public void onNext(ResponseBody responseBody) {
try {
- Log.e("mjhseng", "上传的结果"+responseBody.string());
+ Log.e("mjhseng", "上传的结果" + responseBody.string());
} catch (IOException e) {
e.printStackTrace();
}
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 2d0cc06..14c8b37 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
@@ -13,6 +13,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
+import android.provider.Settings;
import android.support.annotation.Nullable;
import android.util.Log;
@@ -24,6 +25,8 @@ import com.mjsheng.myappstore.KeepAliveConnection;
import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.ServiceAliveUtils;
+import java.io.File;
+
/**
* 守护进程 双进程通讯
@@ -71,18 +74,16 @@ public class GuardService extends Service {
Aria.download(this).register();
-
-
-
// startForeground(1, new Notification());
// 绑定建立链接
bindService(new Intent(this, StepService.class), mServiceConnection, Context.BIND_IMPORTANT);
return START_STICKY;
}
+
//在这里处理任务执行中的状态,如进度进度条的刷新
@Download.onTaskRunning
protected void running(com.arialyy.aria.core.download.DownloadTask task) {
- Log.e("mjsheng", "正在下载=--------------::" + task.getState() + "-------" + task.getPercent()+ "-------" + task.getExtendField());
+ Log.e("mjsheng", "正在下载=--------------::" + task.getState() + "-------" + task.getPercent() + "-------" + task.getExtendField());
ToastUtils.showShort("正在下载=--------------::" + task.getExtendField() + "-------" + task.getPercent());
}
@@ -90,10 +91,18 @@ public class GuardService extends Service {
void taskComplete(com.arialyy.aria.core.download.DownloadTask task) {
//在这里处理任务完成的状态
String filepath = task.getDownloadPath();
- String packageName = task.getExtendField();
+ final String packageName = task.getExtendField();
Log.e("mjsheng", "downloadPath::" + filepath);
Log.e("mjsheng", "extendField::" + packageName);
- ApkUtils.installApkInSilence(filepath, packageName);
+ String s = Settings.System.getString(getContentResolver(), "qch_app_forbid");
+ String s1 = s;
+ if (s != null && !s.contains(packageName)) {
+ s1 = s + "," + packageName;
+ Settings.System.putString(getContentResolver(), "qch_app_forbid", s1);
+ ApkUtils.installApp(GuardService.this, filepath);
+ }
+
+
}
}
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 d9c1853..bd77851 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
@@ -2,7 +2,11 @@ package com.mjsheng.myappstore.server;
import android.app.Service;
import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Handler;
import android.os.IBinder;
+import android.os.Message;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -18,11 +22,13 @@ import com.mjsheng.myappstore.BuildConfig;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
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;
import com.mjsheng.myappstore.bean.NetAndLaunchData;
import com.mjsheng.myappstore.comm.CommonDatas;
+import com.mjsheng.myappstore.network.HTTPInterface;
import com.mjsheng.myappstore.network.Network;
import com.mjsheng.myappstore.network.api.AppLimitApi;
import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
@@ -39,6 +45,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -86,6 +93,56 @@ public class InitJpushServer extends Service {
return super.onStartCommand(intent, flags, startId);
}
+ private void setJpushTags() {
+ OkGo.get(Configure.GET_DEVICES_TAGS)
+ .params("sn", Utils.getSerial())
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, Response response) {
+ Log.e("fht", s);
+ com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(s);
+ int code = jsonObject.getInteger("code");
+ com.alibaba.fastjson.JSONObject data = jsonObject.getJSONObject("data");
+ if (code == 200) {
+ String batch = data.getString("batch");
+ if (batch != null && !batch.equals("")) {
+ Set set = new HashSet();
+ set.add(batch);
+ JPushInterface.setTags(InitJpushServer.this, set, new TagAliasCallback() {
+ @Override
+ public void gotResult(int i, String s, Set set) {
+ if (set == null) {
+ Log.e("initmjsheng", "set is null");
+ } else {
+ Log.e("initmjsheng", "set ---" + set.toString());
+ }
+ Log.e("JPushInterface", s + "---" + i + "---");
+ if (i == 0) {
+ Log.e("JPushInterface", "Tag绑定成功");
+ } else if (i == 6001) {
+ Log.e("JPushInterface", "无效的设置,用户名为空");
+ } else if (i == 6002) {
+ Log.e("JPushInterface", "设置超时,请重试");
+ timerImitate();
+ } else if (i == 6011) {
+ Log.e("JPushInterface", "短时间内操作过于频繁");
+ } else if (i == 996) {
+ Log.e("JPushInterface", "网络连接断开");
+ timerImitate();
+ }
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public void onError(Call call, Response response, Exception e) {
+ super.onError(call, response, e);
+ Log.e("fht", e.getMessage());
+ }
+ });
+ }
private void initJpush() {
@@ -128,8 +185,7 @@ public class InitJpushServer extends Service {
public void call(Long aLong) {
Log.e("JPushInterface", "JPushInterface重新加载");
initJpush();
-
-
+ setJpushTags();
}
});
}
@@ -594,15 +650,19 @@ public class InitJpushServer extends Service {
.params("sn", Utils.getSerial())
.params("mac", com.blankj.utilcode.util.DeviceUtils.getMacAddress())
.params("jpush_id", rid)
+ .params("appstore_version", Utils.getProperty("ro.custom.build.version","获取失败"))
+ .params("store_version", BuildConfig.VERSION_NAME)
.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);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
+ Log.e("fht", "sendMACaddress onError:"+e.getMessage());
}
});
{
@@ -648,6 +708,7 @@ public class InitJpushServer extends Service {
getForceDownload();
getSystemSetting();//从后台获取功能状态
resetDevice();
+ checkUpdate();
}
}
}
@@ -668,6 +729,10 @@ public class InitJpushServer extends Service {
}
}
+ private void checkUpdate() {
+ HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.store");
+ }
+
private void SettingSysData(JSONObject data) {
try {
int setting_call = changeNum(data.optInt("setting_call"));
@@ -696,21 +761,21 @@ public class InitJpushServer extends Service {
if (!BuildConfig.DEBUG) {
boolean qch_usb_choose = Settings.System.putString(getApplicationContext().getContentResolver(), "qch_usb_choose", setting_usb);
Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose);
- String usbStatus = "";
- switch (setting_usb) {
- case "usb_charge":
- usbStatus = "qch_action_usb_usb_charge";
- break;
- case "usb_mtp":
- usbStatus = "qch_action_usb_usb_mtp";
- break;
- case "usb_midi":
- usbStatus = "qch_action_usb_usb_midi";
- break;
+ String usbStatus = "";
+ switch (setting_usb) {
+ case "usb_charge":
+ usbStatus = "qch_action_usb_usb_charge";
+ break;
+ case "usb_mtp":
+ usbStatus = "qch_action_usb_usb_mtp";
+ break;
+ case "usb_midi":
+ usbStatus = "qch_action_usb_usb_midi";
+ break;
- }
- Intent usbIntent = new Intent(usbStatus);
- sendBroadcast(usbIntent);
+ }
+ Intent usbIntent = new Intent(usbStatus);
+ sendBroadcast(usbIntent);
}
int setting_bluetooth = changeNum(data.optInt("setting_bluetooth"));
@@ -738,22 +803,11 @@ public class InitJpushServer extends Service {
//状态栏显示开关
int setting_statusbar = changeNum(data.optInt("setting_statusbar"));
- boolean qch_hide_statusBar = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_hide_statusBar", setting_statusbar);
- Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
-
- String statusbarStatus = "";
- switch (setting_statusbar) {
- case 0:
- statusbarStatus = "qch_show_statusBar";
- break;
- case 1:
- statusbarStatus = "qch_hide_statusBar";
- break;
-
+ int oldNum = Settings.System.getInt(getContentResolver(), "qch_hide_statusBar", 1);
+ if (oldNum != setting_statusbar) {
+ boolean qch_hide_statusBar = Settings.System.putInt(getContentResolver(), "qch_hide_statusBar", setting_statusbar);
+ Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
}
- Intent statusIntent = new Intent(statusbarStatus);
- sendBroadcast(statusIntent);
-
//摄像头开关
int setting_camera = changeNum(data.optInt("setting_camera"));
Log.e("SystemSetting", "setting_camera---------" + setting_camera);
@@ -856,4 +910,43 @@ public class InitJpushServer extends Service {
return num;
}
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what) {
+ case 200:
+ com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
+ installAPK(jsonObject);
+ break;
+ case -200:
+ Log.e("fht", "no update");
+ }
+ }
+
+ };
+
+ private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
+ String url = jsonObject.getString("url");
+ int versionCode = jsonObject.getInteger("version_code");
+ String packageName = jsonObject.getString("package");
+ PackageManager pm = getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo == null || packageInfo.versionCode != versionCode) {
+ Aria.download(this)
+ .load(url) //读取下载地址
+ .setFilePath(PathUtils.getExternalDownloadsPath() + "/ygj/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk",true)
+ .setExtendField(packageName)
+ .start(); //启动下载}
+ } else {
+ Log.e("fht", "无需更新");
+ }
+
+ }
+
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/MyDownloadService.java b/app/src/main/java/com/mjsheng/myappstore/server/MyDownloadService.java
index a011215..211db65 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/MyDownloadService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/MyDownloadService.java
@@ -131,22 +131,22 @@ public class MyDownloadService extends Service {
if (info.getApp_baoming().equals(Utils.YOUNGSYSTEM_APP_TONGBU) || info.getApp_baoming().equals(MyApplication.getAppContext().getPackageName())) {
// ApkUtils.install(MyApplication.getAppContext(), new File(downloadInfo.getTargetPath()));
- ApkUtils.installApkInSilence(downloadInfo.getTargetPath(), info.getApp_baoming());
+ ApkUtils.installApp(MyDownloadService.this, downloadInfo.getTargetPath());
Log.e("fht", "updateTask1");
// ApkUtils.updateTask(getApplicationContext());
}
if (downloadURL.contains(downloadInfo.getUrl())) {
// ApkUtils.install(MyApplication.getAppContext(), new File(downloadInfo.getTargetPath()));
- if (ApkUtils.getinstallPackage().equals("") || ApkUtils.isAvailable(getApplicationContext(), ApkUtils.getinstallPackage())) {
- //没有任务或者任务已经安装
- Log.e("fht", "task package is installed , install new apk ");
- ApkUtils.installApkInSilence(downloadInfo.getTargetPath(), info.getApp_baoming());
- } else {
- //更新正在安装的信息,更新任务列表
- ApkUtils.setInstallIngPackageName("");
- ApkUtils.updateTask(allTask, getApplicationContext());
- }
+// if (MyApplication.getInstance().getInstallIngPackageName().equals("") || ApkUtils.isAvailable(getApplicationContext(), MyApplication.getInstance().getInstallIngPackageName())) {
+ //没有任务或者任务已经安装
+ Log.e("fht", "task package is installed , install new apk ");
+ ApkUtils.installApkInSilence(downloadInfo.getTargetPath(), info.getApp_baoming());
+// } else {
+// //更新正在安装的信息,更新任务列表
+// MyApplication.getInstance().setInstallIngPackageName("");
+// MyApplication.getInstance().updateList();
+// }
//有bug,会一直回调
Log.e("fht", "updateTask2");
@@ -208,7 +208,7 @@ public class MyDownloadService extends Service {
// 删除标识 下载地址
String URL = intent.getStringExtra("URL");
DownloadInfo downloadInfo = downloadManager.getDownloadInfo(URL);
- if (downloadInfo != null && StorageUtils.isFileIsExists(downloadInfo.getTargetPath())) {
+ if (downloadInfo != null) {
downloadInfo.setState(10);
sendDownloadState(downloadInfo);
downloadManager.removeTask(downloadInfo.getUrl(), true);
@@ -297,15 +297,7 @@ public class MyDownloadService extends Service {
downloadInfo.setState(10);
sendDownloadState(downloadInfo);
downloadManager.removeTask(downloadInfo.getUrl(), true);
- }
- } else if (Utils.DOWNLOAD_DELETE_URL_ACTION.equals(intent.getAction())) {
- // 删除标识 下载地址
- String URL = intent.getStringExtra("URL");
- DownloadInfo downloadInfo = downloadManager.getDownloadInfo(URL);
- if (downloadInfo != null) {
- downloadInfo.setState(10);
- sendDownloadState(downloadInfo);
- downloadManager.removeTask(downloadInfo.getUrl(), true);
+
}
} else if (Utils.DOWNLOAD_DELETE_UPDATE_ACTION.equals(intent.getAction())) {
// 删除 应用更新包
@@ -362,8 +354,6 @@ public class MyDownloadService extends Service {
Intent allIntent = new Intent();
allIntent.setAction(Utils.DOWNLOAD_ALLSERVICE_ACTION);
allIntent.putExtra("allTask", (Serializable) list);
- Log.e("fht", "allTask updateTask:" + allTask.size());
- ApkUtils.updateTask(allTask, getApplicationContext());
sendBroadcast(allIntent);
}
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/StepService.java b/app/src/main/java/com/mjsheng/myappstore/server/StepService.java
index 6e3ac4c..ad08d73 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/StepService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/StepService.java
@@ -14,11 +14,19 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.annotation.Nullable;
+import android.util.Log;
import com.blankj.utilcode.util.LogUtils;
+import com.lzy.okserver.download.DownloadInfo;
import com.mjsheng.myappstore.KeepAliveConnection;
+import com.mjsheng.myappstore.MyApplication;
+import com.mjsheng.myappstore.bean.AppDateInfo;
+import com.mjsheng.myappstore.bean.FileData;
+import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.ServiceAliveUtils;
+import java.nio.file.Path;
+
/**
* 主进程 双进程通讯
*
@@ -59,6 +67,18 @@ public class StepService extends Service {
public int onStartCommand(Intent intent, int flags, int startId) {
// startForeground(1, new Notification());
// 绑定建立链接
+ try {
+ final String filePath = intent.getStringExtra("filePath");
+ final String packageName = intent.getStringExtra("packageName");
+ Log.e("fht", filePath);
+ Log.e("fht", packageName);
+ FileData fileData = new FileData(filePath, packageName);
+ MyApplication.getInstance().addFileData(fileData);
+
+ } catch (Exception e) {
+ Log.e("fht", e.getMessage());
+ }
+
bindService(new Intent(this, GuardService.class), mServiceConnection, Context.BIND_IMPORTANT);
return START_STICKY;
}
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 969782a..0f56c6b 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
@@ -17,9 +17,11 @@ import android.widget.Toast;
import com.lzy.okserver.download.DownloadInfo;
import com.lzy.okserver.download.DownloadManager;
import com.lzy.okserver.download.DownloadService;
+import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.R;
import com.mjsheng.myappstore.bean.AppDateInfo;
import com.mjsheng.myappstore.bean.AppDownloadInfo;
+import com.mjsheng.myappstore.bean.FileData;
import com.mjsheng.myappstore.download.StorageUtils;
import com.mjsheng.myappstore.utils.update.ToastTool;
@@ -305,11 +307,58 @@ public class ApkUtils {
// Log.e("mjsheng", "安装失败");
// }
// }
+ public interface InstallCallback {
+ void installInfoCallback(String path, String packageName);
+ }
+
+ public static boolean installApp(Context context, String apkPath) {
+ ToastTool.show("正在安装应用...");
+ Process process = null;
+ BufferedReader successResult = null;
+ BufferedReader errorResult = null;
+ StringBuilder successMsg = new StringBuilder();
+ StringBuilder errorMsg = new StringBuilder();
+ try {
+ process = new ProcessBuilder("pm", "install", "-i", BuildConfig.APPLICATION_ID, "--user", "0", apkPath).start();
+ successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
+ errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+ String s;
+ while ((s = successResult.readLine()) != null) {
+ successMsg.append(s);
+ }
+ while ((s = errorResult.readLine()) != null) {
+ errorMsg.append(s);
+ }
+ } catch (Exception e) {
+
+ } finally {
+ try {
+ if (successResult != null) {
+ successResult.close();
+ }
+ if (errorResult != null) {
+ errorResult.close();
+ }
+ } catch (Exception e) {
+
+ }
+ if (process != null) {
+ process.destroy();
+ }
+ }
+ Log.e("result", "" + errorMsg.toString());
+ //如果含有“success”认为安装成功
+ Log.e("installApp", successMsg.toString());
+ if (!successMsg.toString().equalsIgnoreCase("success")) {
+ ApkUtils.install(context, new File(apkPath));
+ }
+ return successMsg.toString().equalsIgnoreCase("success");
+ }
public static void installApkInSilence(String installPath, String packageName) {
ToastTool.show("正在安装应用...");
- setInstallIngPackageName(packageName);
+
Class> pmService;
Class> activityTherad;
Method method;
@@ -380,111 +429,5 @@ public class ApkUtils {
return uid / PER_USER_RANGE;
}
- private static List taskList = new ArrayList<>();
- public static List alltask;
-
- static String packageName = "";
-
- public static void setInstallIngPackageName(String packageNames) {
- packageName = packageNames;
- Log.e("fht", "正在安装:" + packageNames);
- }
-
- public static String getinstallPackage() {
- return packageName;
- }
-
- public static boolean isInstalling(String packageNames) {
- Log.e("fht", "isInstalling:" + packageName);
- return packageName.equals(packageNames);
- }
-
- public static DownloadInfo getDownloadInfoByPackageName(String s) {
- int x = -1;
- if (alltask != null && alltask.size() > 0) {
- for (int i = 0; i < alltask.size(); i++) {
- DownloadInfo downloadInfo = alltask.get(i);
- AppDateInfo dateInfo = (AppDateInfo) downloadInfo.getData();
- if (dateInfo.getApp_baoming().equals(s)) {
- x = i;
- }
- }
- }
- if (x != -1) {
- return alltask.get(x);
- } else {
- return null;
- }
- }
-
- static synchronized public void updateTask(List allTask, Context context) {
- alltask = allTask;
- Log.e("fht", "updateTask:" + allTask.size());
- long time1 = System.currentTimeMillis();
- List list = new ArrayList<>();
- if (allTask.size() > 0) {
- for (int i = 0; i < allTask.size(); i++) {
- DownloadInfo downloadInfo = allTask.get(i);
- if (downloadInfo != null && StorageUtils.isFileIsExists(downloadInfo.getTargetPath())) {
- AppDateInfo dateInfo = (AppDateInfo) downloadInfo.getData();
- if (!dateInfo.getApp_baoming().equals(Utils.YOUNGSYSTEM_APP_TONGBU) && !dateInfo.getApp_baoming().equals(context.getPackageName())) {
- AppDownloadInfo info = new AppDownloadInfo();
- info.setFileName(downloadInfo.getFileName());
- info.setProgress(downloadInfo.getProgress());
- info.setTargetPath(downloadInfo.getTargetPath());
- info.setUrl(downloadInfo.getUrl());
- info.setState(downloadInfo.getState());
- info.setDownloadLength(downloadInfo.getDownloadLength());
- info.setTotalLength(downloadInfo.getTotalLength());
- info.setPackageName(dateInfo.getApp_baoming());
- info.setVersion(dateInfo.getApp_banben());
- info.setData(dateInfo);
- list.add(info);
- }
- }
- }
- }
- long time2 = System.currentTimeMillis();
- Log.e("fht", "time:" + (time2 - time1));
- taskList = list;
- if ((packageName.equals("") || isAvailable(context, getinstallPackage())) && taskList.size() > 0 && taskList.get(0).getState() == DownloadManager.FINISH) {
- if (isAvailable(context, taskList.get(0).getPackageName())) {
- taskList.remove(0);
- }
- if (taskList.size() > 0) {
- ApkUtils.installApkInSilence(taskList.get(0).getTargetPath(), taskList.get(0).getPackageName());
- Log.e("fht", "updateTask1:" + taskList.get(0).getPackageName());
- }
- }
- }
-
-
- synchronized public static void removeInfo(String packageName) {
- Log.e("fht", "removeInfo:" + "taskList.size():" + taskList.size());
-
- int position = -1;
- for (int i = 0; i < taskList.size(); i++) {
- if (packageName.equals(taskList.get(i).getPackageName())) {
- position = i;
- }
- }
- if (position != -1) {
- removeInfo(taskList.get(position));
- } else {
- setInstallIngPackageName("");
- Log.e("fht", "position == -1");
- }
- }
-
- synchronized public static void removeInfo(AppDownloadInfo info) {
- taskList.remove(info);
- if (taskList != null && taskList.size() > 0) {
- ApkUtils.installApkInSilence(taskList.get(0).getTargetPath(), taskList.get(0).getPackageName());
- Log.e("fht", "removeInfo:" + taskList.get(0).getPackageName());
- } else {
- setInstallIngPackageName("");
- Log.e("fht", "任务为空");
- }
- }
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java b/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java
index ea28c6f..f5469a2 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java
@@ -186,4 +186,8 @@ public class Configure {
public static final String SEND_USEDTIME= HTTP_TAG_HEAD_NEW + "Applog/getAppLog";
+ public static final String CHECK_UPDATE= HTTP_TAG_HEAD_NEW + "Silent/silent";
+ //更新接口
+ public static final String GET_DEVICES_TAGS= HTTP_TAG_HEAD_NEW + "Sn/getSnTag";
+
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
index bdd28ca..d7dceeb 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
@@ -48,6 +48,7 @@ import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.Reader;
+import java.lang.reflect.Method;
import java.net.NetworkInterface;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@@ -103,6 +104,7 @@ public class Utils {
public static final int COUNT_ONE_PAGE2 = 10;
public static final String YOUNGSYSTEM_APP_TONGBU = "com.school.app.syn"; // 小学系统 同步教材app
/**
+ *
*/
public static final String number[] = {
"1", "2", "3", "4", "5", "6", "7",
@@ -154,7 +156,6 @@ public class Utils {
// 积分记录 达人标准次数记录
-
// MD5 设备地址标识
public static String getMAC(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 如果当前设备系统大于等于6.0 使用下面的方法
@@ -715,15 +716,16 @@ public class Utils {
}
- public static String transferLongToDate(Long millSec){
+ public static String transferLongToDate(Long millSec) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date= new Date(millSec);
+ Date date = new Date(millSec);
return sdf.format(date);
}
+
public static String getSn() {
return Build.SERIAL;
}
@@ -783,7 +785,6 @@ public class Utils {
}
-
//判断是否为系统应用
public static boolean isSystemApp(Context context, String pkgName) {
boolean isSystemApp = false;
@@ -856,5 +857,18 @@ public class Utils {
// return bgBitmap;
}
+ public static String getProperty(String key, String defaultValue) {
+ String value = defaultValue;
+ try {
+ Class> c = Class.forName("android.os.SystemProperties");
+ Method get = c.getMethod("get", String.class, String.class);
+ value = (String) (get.invoke(c, key, "unknown"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ return value;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 1f6bb29..0000000
--- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 0d025f9..0000000
--- a/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml
index c73fe81..c4eb313 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/activity_main.xml
@@ -41,12 +41,13 @@
android:layout_marginBottom="@dimen/dp_10"
android:gravity="center_horizontal"
android:text="设备信息"
- android:textSize="@dimen/sp_18"
+ android:textSize="@dimen/sp_16"
android:textStyle="bold" />
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/dp_30">
@@ -65,7 +67,7 @@
diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml
index 64b185c..31c4f3b 100644
--- a/app/src/main/res/layout-port/activity_main.xml
+++ b/app/src/main/res/layout-port/activity_main.xml
@@ -41,13 +41,13 @@
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="设备信息"
- android:textSize="@dimen/sp_18"
+ android:textSize="@dimen/sp_16"
android:textStyle="bold" />
+ android:layout_marginTop="@dimen/dp_50">
@@ -78,7 +79,8 @@
android:layout_marginEnd="@dimen/dp_5"
android:layout_marginRight="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_5"
- android:text="设备MAC:"
+ android:text="MAC地址"
+ android:textColor="#7b7b7b"
android:textSize="@dimen/sp_12" />
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index eca70cf..0000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index eca70cf..0000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 1d349f0..132a9d5 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 1b52399..0000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 1d349f0..132a9d5 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 115a4c7..0000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 1d349f0..132a9d5 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 459ca60..0000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 1d349f0..132a9d5 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 8e19b41..0000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 1d349f0..132a9d5 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 4c19a13..0000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a2bf1b7..52de4fe 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,6 +1,6 @@
- 教管易
+ 设备信息
账户管理
护眼设置