From 80418ce5c34a21945e545b0cb28b091a05589244 Mon Sep 17 00:00:00 2001 From: Administrator <981964879@qq.com> Date: Fri, 25 Dec 2020 11:08:25 +0800 Subject: [PATCH] =?UTF-8?q?update:2020.12.25=20fix:=E6=96=B0=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E5=AF=B9=E6=8E=A5=E5=AE=8C=E6=88=90=20add:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 97 +- app/.gitignore | 2 + app/build.gradle | 46 +- app/src/main/AndroidManifest.xml | 3 +- app/src/main/assets/aria_config.xml | 2 +- .../java/com/appstore/uiui/MyApplication.java | 134 ++- .../uiui/activity/DetailsActivity.java | 291 ++++-- .../activity/DownloadManagerActivity.java | 39 +- .../uiui/activity/KindDetailActivity.java | 22 +- .../appstore/uiui/activity/MainActivity.java | 206 ++-- .../uiui/activity/SearcherActivity.java | 13 +- .../com/appstore/uiui/adapter/AppAdapter.java | 374 ++++--- .../uiui/adapter/DownloadManagerAdapter.java | 500 ++++++--- .../uiui/adapter/LocalAppAdapter.java | 4 +- .../uiui/adapter/UpdateAppAdapter.java | 209 ++-- .../java/com/appstore/uiui/base/FilePath.java | 8 + .../appstore/uiui/base/LazyLoadFragment.java | 2 + .../java/com/appstore/uiui/bean/AppInfo.java | 33 +- .../com/appstore/uiui/bean/BaseResponse.java | 22 +- .../java/com/appstore/uiui/bean/ImageUrl.java | 13 + .../uiui/{base => bean}/UserInfo.java | 67 +- .../uiui/fragment/FeaturedFragment.java | 211 +++- .../appstore/uiui/fragment/KindFragment.java | 3 +- .../uiui/fragment/ManageFragment.java | 11 +- .../appstore/uiui/fragment/RankFragment.java | 20 +- .../uiui/listener/LogDownloadListener.java | 63 -- .../appstore/uiui/network/NetWorkManager.java | 103 ++ .../java/com/appstore/uiui/network/OKGO.java | 959 +++++++++--------- .../com/appstore/uiui/network/URLs/Url.java | 29 - .../uiui/network/URLs/UrlAddress.java | 30 + .../uiui/network/api/BannerImage.java | 19 + .../uiui/network/api/DownloadApp.java | 20 + .../uiui/network/api/QueryAllApp.java | 19 + .../com/appstore/uiui/network/api/SNInfo.java | 16 + .../uiui/receiver/AppManagerReceiver.java | 21 +- .../appstore/uiui/receiver/BootReceiver.java | 2 +- .../appstore/uiui/service/GuardService.java | 137 ++- .../com/appstore/uiui/utils/ApkUtils.java | 226 +++-- .../com/appstore/uiui/utils/FileUtils.java | 123 +++ .../appstore/uiui/utils/SaveListUtils.java | 66 -- .../com/appstore/uiui/utils/StorageUtils.java | 18 + .../java/com/appstore/uiui/utils/Utils.java | 97 +- .../main/res/drawable/btn_shap_download.xml | 14 + .../main/res/layout-land/activity_details.xml | 9 +- .../main/res/layout-land/activity_main.xml | 1 + app/src/main/res/layout-land/item_app.xml | 5 +- .../main/res/layout-port/activity_details.xml | 9 +- .../main/res/layout-port/activity_main.xml | 1 + app/src/main/res/layout-port/item_app.xml | 5 +- app/src/main/res/values/colors.xml | 2 + 50 files changed, 2589 insertions(+), 1737 deletions(-) create mode 100644 app/src/main/java/com/appstore/uiui/base/FilePath.java create mode 100644 app/src/main/java/com/appstore/uiui/bean/ImageUrl.java rename app/src/main/java/com/appstore/uiui/{base => bean}/UserInfo.java (60%) delete mode 100644 app/src/main/java/com/appstore/uiui/listener/LogDownloadListener.java create mode 100644 app/src/main/java/com/appstore/uiui/network/NetWorkManager.java delete mode 100644 app/src/main/java/com/appstore/uiui/network/URLs/Url.java create mode 100644 app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java create mode 100644 app/src/main/java/com/appstore/uiui/network/api/BannerImage.java create mode 100644 app/src/main/java/com/appstore/uiui/network/api/DownloadApp.java create mode 100644 app/src/main/java/com/appstore/uiui/network/api/QueryAllApp.java create mode 100644 app/src/main/java/com/appstore/uiui/network/api/SNInfo.java create mode 100644 app/src/main/java/com/appstore/uiui/utils/FileUtils.java delete mode 100644 app/src/main/java/com/appstore/uiui/utils/SaveListUtils.java create mode 100644 app/src/main/res/drawable/btn_shap_download.xml diff --git a/.gitignore b/.gitignore index 603b140..4b106b6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,87 @@ +# Built application files +*.apk +*.aar +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +# Uncomment the following line in case you need and you don't have the release build type files in your app +# release/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ *.iml -.gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.DS_Store -/build -/captures +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore + +# External native build folder generated in Android Studio 2.2 and later .externalNativeBuild -.cxx +.cxx/ + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ +/.idea/ +/.idea/libraries/ diff --git a/app/.gitignore b/app/.gitignore index 53e730c..c9bc9b9 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -84,3 +84,5 @@ lint/outputs/ lint/tmp/ # lint/reports/ /.idea/ +/.idea/libraries/ +/.idea/libraries/ diff --git a/app/build.gradle b/app/build.gradle index c156633..0f5f558 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -104,54 +104,44 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.cardview:cardview:1.0.0' - testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation "androidx.core:core-ktx:+" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" //github第三方控件 implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' //下拉刷新控件 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //1.0.5及以前版本的老用户升级需谨慎,API改动过大 implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0' //没有使用特殊Header,可以不加这行 - + //glide implementation 'com.github.bumptech.glide:glide:4.10.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0' //aria - implementation 'com.arialyy.aria:core:3.7.7' - annotationProcessor 'com.arialyy.aria:compiler:3.7.7' - //OKGO - //必须使用 - implementation 'com.lzy.net:okgo:3.0.4' - //以下三个选择添加,okrx和okrx2不能同时使用 - implementation 'com.lzy.net:okrx:1.0.2' -// compile 'com.lzy.net:okrx2:2.0.2' - implementation 'com.lzy.net:okserver:2.0.5' - - implementation 'com.alibaba:fastjson:1.2.21' - - implementation 'com.blankj:utilcode:1.23.7' + implementation 'com.arialyy.aria:core:3.8.5' + annotationProcessor 'com.arialyy.aria:compiler:3.8.5' //动态权限框架 implementation 'com.hjq:xxpermissions:6.0' - - implementation 'com.squareup.retrofit2:converter-scalars:2.1.0' - implementation 'com.squareup.retrofit2:converter-gson:2.1.0' - implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0' - implementation 'io.reactivex:rxjava:1.2.2' - implementation 'io.reactivex:rxandroid:1.2.1' - - + //okhttp + implementation 'com.squareup.okhttp3:okhttp:4.6.0' + //RxJava和Retrofit + implementation 'io.reactivex.rxjava2:rxjava:2.2.5' + implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' + implementation 'com.squareup.retrofit2:retrofit:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.3.0' + implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' + //google + implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.zxing:core:3.3.0' + implementation 'com.alibaba:fastjson:1.2.21' //极光推送 implementation 'cn.jiguang.sdk:jpush:3.4.1' // 此处以JPush 3.4.1 版本为例。 implementation 'cn.jiguang.sdk:jcore:2.2.4' // 此处以JCore 2.2.4 版本为例。 - + //banner图 implementation 'com.zhpan.library:bannerview:2.6.4' - implementation "androidx.core:core-ktx:+" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'uk.co.chrisjenx:calligraphy:2.3.0' //更换字体框架 - } repositories { mavenCentral() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b2be800..cd61141 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,6 @@ xmlns:tools="http://schemas.android.com/tools" package="com.appstore.uiui" android:sharedUserId="android.uid.system"> - @@ -204,7 +203,7 @@ diff --git a/app/src/main/assets/aria_config.xml b/app/src/main/assets/aria_config.xml index 3a36cd5..16a9dc4 100644 --- a/app/src/main/assets/aria_config.xml +++ b/app/src/main/assets/aria_config.xml @@ -41,7 +41,7 @@ 3、从3.4.1开始,如果线程数为1,文件初始化时将不再预占用对应长度的空间,下载多少byte,则占多大的空间; 对于3.4.1之前版本的未完成的老任务,依然采用原来的文件空间占用方式; --> - + diff --git a/app/src/main/java/com/appstore/uiui/MyApplication.java b/app/src/main/java/com/appstore/uiui/MyApplication.java index b3f7477..5243d2d 100644 --- a/app/src/main/java/com/appstore/uiui/MyApplication.java +++ b/app/src/main/java/com/appstore/uiui/MyApplication.java @@ -19,10 +19,7 @@ import com.appstore.uiui.utils.ApkUtils; import com.appstore.uiui.utils.LogUtils; import com.appstore.uiui.utils.SPUtils; import com.appstore.uiui.utils.ToastUtil; -import com.lzy.okgo.OkGo; -import com.lzy.okgo.callback.FileCallback; -import com.lzy.okgo.model.Progress; -import com.lzy.okgo.model.Response; +import com.arialyy.aria.core.Aria; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator; import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator; @@ -83,13 +80,14 @@ public class MyApplication extends Application { JPushInterface.init(this); // 初始化 JPush app = this; ToastUtil.init(this); - OkGo.getInstance().init(this) - .setRetryCount(10)//重试次数 - ; +// OkGo.getInstance().init(this) +// .setRetryCount(10)//重试次数 +// ; + + Aria.init(this); + Aria.get(this).getDownloadConfig().setMaxTaskNum(1); + Aria.get(this).getDownloadConfig().setConvertSpeed(true); -// AppUtil.getInstalledApp(this); -// Aria.init(this); -// Aria.download(this).register(); if (!isDebug(this)) { catchException(); } @@ -206,10 +204,10 @@ public class MyApplication extends Application { setAppLockedstate(EXTRA); break; case JIGUANG_FORCE_INSTALLAPK: - intallApk(EXTRA); +// intallApk(EXTRA); break; case JIGUANG_FORCE_UNINSTALLAPK: - unintallApk(EXTRA); +// unintallApk(EXTRA); break; } @@ -375,62 +373,62 @@ public class MyApplication extends Application { } //静默安装应用,使用okgo,断网会出现问题,等待修改使用aria - synchronized private void intallApk(String jsondata) { - try { - JSONObject extra = new JSONObject(jsondata); - final String packages = extra.getString("package"); - ToastUtil.debugShow("收到应用安装消息:包名" + packages); - String url = extra.getString("url"); - OkGo.get(url) - .execute(new FileCallback() { - @Override - public void onSuccess(final Response response) { -// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video"); - new Thread(new Runnable() { - @Override - public void run() { - ApkUtils.installApp(app.getAppContext(), response.body().getAbsolutePath()); - } - }).start(); - LogUtils.e("onSuccess", "download file successful,now installing"); - } +// synchronized private void intallApk(String jsondata) { +// try { +// JSONObject extra = new JSONObject(jsondata); +// final String packages = extra.getString("package"); +// ToastUtil.debugShow("收到应用安装消息:包名" + packages); +// String url = extra.getString("url"); +// OkGo.get(url) +// .execute(new FileCallback() { +// @Override +// public void onSuccess(final Response response) { +//// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video"); +// new Thread(new Runnable() { +// @Override +// public void run() { +// ApkUtils.installApp(app.getAppContext(), response.body().getAbsolutePath()); +// } +// }).start(); +// LogUtils.e("onSuccess", "download file successful,now installing"); +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("manageCustomMessage", "File download Failure"); +// } +// +// @Override +// public void downloadProgress(Progress progress) { +// super.downloadProgress(progress); +// LogUtils.e("downloadProgress", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed); +// } +// }); +// +// } catch (JSONException e) { +// e.printStackTrace(); +// LogUtils.e("intallApk", e.getMessage()); +// } +// } - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("manageCustomMessage", "File download Failure"); - } - - @Override - public void downloadProgress(Progress progress) { - super.downloadProgress(progress); - LogUtils.e("downloadProgress", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed); - } - }); - - } catch (JSONException e) { - e.printStackTrace(); - LogUtils.e("intallApk", e.getMessage()); - } - } - - synchronized private void unintallApk(String json) { - String sn_id = (String) SPUtils.get(getApplicationContext(), "sn_id", "-1"); - try { - JSONObject object = new JSONObject(json); - String packageName = object.getString("package"); - ToastUtil.debugShow("收到应用卸载消息:包名" + packageName); - if (!packageName.equals("") && !packageName.equals(getApplicationContext().getPackageName())) { - if (!ApkUtils.isAvailable(getApplicationContext(), packageName)) { - OKGO.setAppuninstallInfo(sn_id, packageName); - } else { - ApkUtils.deleteApkInSilence(packageName); - } - } - } catch (JSONException e) { - e.printStackTrace(); - LogUtils.e("unintallApk", e.getMessage()); - } - } +// synchronized private void unintallApk(String json) { +// String sn_id = (String) SPUtils.get(getApplicationContext(), "sn_id", "-1"); +// try { +// JSONObject object = new JSONObject(json); +// String packageName = object.getString("package"); +// ToastUtil.debugShow("收到应用卸载消息:包名" + packageName); +// if (!packageName.equals("") && !packageName.equals(getApplicationContext().getPackageName())) { +// if (!ApkUtils.isAvailable(getApplicationContext(), packageName)) { +// OKGO.setAppuninstallInfo(sn_id, packageName); +// } else { +// ApkUtils.deleteApkInSilence(packageName); +// } +// } +// } catch (JSONException e) { +// e.printStackTrace(); +// LogUtils.e("unintallApk", e.getMessage()); +// } +// } } diff --git a/app/src/main/java/com/appstore/uiui/activity/DetailsActivity.java b/app/src/main/java/com/appstore/uiui/activity/DetailsActivity.java index 6376cbf..0e3ddb2 100644 --- a/app/src/main/java/com/appstore/uiui/activity/DetailsActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/DetailsActivity.java @@ -4,6 +4,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; @@ -13,6 +14,8 @@ import android.widget.TextView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.appstore.uiui.R; import com.appstore.uiui.adapter.ImageAdapter; import com.appstore.uiui.base.BaseActivity; @@ -20,14 +23,15 @@ import com.appstore.uiui.bean.AppInfo; import com.appstore.uiui.bean.GlideCircleWithBorder; import com.appstore.uiui.helper.CustomSnapHelper; import com.appstore.uiui.utils.ApkUtils; +import com.appstore.uiui.utils.FileUtils; +import com.appstore.uiui.utils.StorageUtils; import com.appstore.uiui.utils.ToastUtil; +import com.arialyy.annotations.Download; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.download.DownloadEntity; +import com.arialyy.aria.core.inf.IEntity; +import com.arialyy.aria.core.task.DownloadTask; import com.bumptech.glide.Glide; -import com.lzy.okgo.OkGo; -import com.lzy.okgo.model.Progress; -import com.lzy.okgo.request.GetRequest; -import com.lzy.okserver.OkDownload; -import com.lzy.okserver.download.DownloadListener; -import com.lzy.okserver.download.DownloadTask; import java.io.File; import java.util.ArrayList; @@ -67,26 +71,27 @@ public class DetailsActivity extends BaseActivity { @Override protected void initData() { + Aria.download(this).register(); appInfo = (AppInfo) getIntent().getSerializableExtra("appinfo"); if (appInfo == null) { ToastUtil.show("获取引用信息失败,返回重试"); return; } - final DownloadTask downloadTask = OkDownload.getInstance().getTask(appInfo.getApp_url()); - if (downloadTask != null) { - downloadTask.register(new FileDownloadListener(appInfo.getApp_url())); - refresh(downloadTask.progress); - } +// final DownloadTask downloadTask = OkDownload.getInstance().getTask(appInfo.getApp_url()); +// if (downloadTask != null) { +// downloadTask.register(new FileDownloadListener(appInfo.getApp_url())); +// refresh(downloadTask.progress); +// } // tv_title.setText(appInfo.getApp_name()); tv_name.setText(appInfo.getApp_name()); tv_company.setText(appInfo.getApp_developer()); - detali_tv_size.setText("大小\t" + "(" + appInfo.getApp_size() + "MB" + ")"); + detali_tv_size.setText("大小\t" + "(" + StorageUtils.byteToMB(appInfo.getApp_size()) + ")"); detail_tv_Developers.setText("开发者\t" + appInfo.getApp_developer()); tv_update_time.setText("时间\t" + appInfo.getCreatetime()); tv_version.setText("版本\t" + appInfo.getApp_version_name()); tv_content.setText(appInfo.getApp_desc()); rating_bar.setRating((float) appInfo.getApp_score()); - Glide.with(this).asBitmap().load(appInfo.getApp_img()) .transform(new GlideCircleWithBorder(this)) + Glide.with(this).asBitmap().load(appInfo.getApp_img()).transform(new GlideCircleWithBorder(this)) .into(iv_icon); List list = new ArrayList() {{ this.add(appInfo.getApp_preview1()); @@ -98,34 +103,91 @@ public class DetailsActivity extends BaseActivity { rv_image.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); CustomSnapHelper snapHelper = new CustomSnapHelper(); snapHelper.attachToRecyclerView(rv_image); - if (appInfo.isInstall()) { - if (appInfo.isUpdate()) { - tv_download.setText("更新" + "(" + appInfo.getApp_size() + "MB" + ")"); + final boolean installed = ApkUtils.isInstalled(DetailsActivity.this, appInfo.getApp_package()); + final boolean update = ApkUtils.isUpdate(DetailsActivity.this, appInfo.getApp_package(), appInfo.getApp_version_code()); + if (installed) { + if (update) { + tv_download.setText("更新" + "(" + StorageUtils.byteToMB(appInfo.getApp_size()) + ")"); } else { tv_download.setText("打开"); } } else { - tv_download.setText("安装" + "(" + appInfo.getApp_size() + "MB" + ")"); + tv_download.setText("安装" + "(" + StorageUtils.byteToMB(appInfo.getApp_size()) + ")"); } tv_download.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (appInfo.isInstall() && !appInfo.isUpdate()) { + if (installed && !update) { ApkUtils.openApp(DetailsActivity.this, appInfo.getApp_package()); } else { - GetRequest request = OkGo.get(appInfo.getApp_url()); - //这里第一个参数是tag,代表下载任务的唯一标识,传任意字符串都行,需要保证唯一,我这里用url作为了tag - OkDownload.request(appInfo.getApp_url(), request)// -// .priority(apk.priority)// - .extra1(appInfo)// - .save()// - .register(new FileDownloadListener(appInfo.getApp_url()))// - .start(); +// GetRequest request = OkGo.get(appInfo.getApp_url()); +// //这里第一个参数是tag,代表下载任务的唯一标识,传任意字符串都行,需要保证唯一,我这里用url作为了tag +// OkDownload.request(appInfo.getApp_url(), request)// +//// .priority(apk.priority)// +// .extra1(appInfo)// +// .save()// +// .register(new FileDownloadListener(appInfo.getApp_url()))// +// .start(); + DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(appInfo.getApp_url()); + if (null != entity) { + switch (entity.getState()) { + case IEntity.STATE_OTHER: + case IEntity.STATE_FAIL: + case IEntity.STATE_STOP: + case IEntity.STATE_WAIT: + case IEntity.STATE_CANCEL: + Aria.download(this).load(entity.getId()).resume(); + break; + case IEntity.STATE_RUNNING: + Aria.download(this).load(entity.getId()).stop(); + break; + case IEntity.STATE_PRE: + break; + case IEntity.STATE_POST_PRE: + break; + case IEntity.STATE_COMPLETE: + File file = new File(entity.getFilePath()); + if (file.exists()) { + tv_download.setText("安装中"); + ApkUtils.installApp(DetailsActivity.this, entity.getFilePath()); + } else { + Aria.download(this).load(entity.getId()).cancel(true); + JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo); + FileUtils.ariaDownload(DetailsActivity.this, appInfo.getApp_url(), jsonObject); + } + break; + } + } } } }); } + void refresh(DownloadTask task) { + if (appInfo.getApp_url().equals(task.getEntity().getUrl())) { + switch (task.getState()) { + case IEntity.STATE_OTHER: + tv_download.setText("安装"); + break; + case IEntity.STATE_STOP: + tv_download.setText("继续"); + break; + case IEntity.STATE_FAIL: + tv_download.setText("出错"); + break; + case IEntity.STATE_WAIT: + tv_download.setText("等待"); + break; + case IEntity.STATE_COMPLETE: + tv_download.setText("安装中"); + break; + case IEntity.STATE_RUNNING: + tv_download.setText(task.getPercent() + "%"); + break; + } + } + } + @Override protected void setListener() { if (myReceiver == null) { @@ -143,71 +205,71 @@ public class DetailsActivity extends BaseActivity { finish(); } - public void refresh(Progress progress) { - switch (progress.status) { - case Progress.NONE: - tv_download.setText("安装" + "(" + appInfo.getApp_size() + "MB" + ")"); - break; - case Progress.PAUSE: - tv_download.setText("继续"); - break; - case Progress.ERROR: - tv_download.setText("出错"); - break; - case Progress.WAITING: - tv_download.setText("等待"); - break; - case Progress.LOADING: - tv_download.setText((int) (progress.fraction * 100) + "%"); - break; - case Progress.FINISH: - tv_download.setText("安装中"); - break; - } - } +// public void refresh(Progress progress) { +// switch (progress.status) { +// case Progress.NONE: +// tv_download.setText("安装" + "(" + appInfo.getApp_size() + "MB" + ")"); +// break; +// case Progress.PAUSE: +// tv_download.setText("继续"); +// break; +// case Progress.ERROR: +// tv_download.setText("出错"); +// break; +// case Progress.WAITING: +// tv_download.setText("等待"); +// break; +// case Progress.LOADING: +// tv_download.setText((int) (progress.fraction * 100) + "%"); +// break; +// case Progress.FINISH: +// tv_download.setText("安装中"); +// break; +// } +// } - class FileDownloadListener extends DownloadListener { - - public FileDownloadListener(Object tag) { - super(tag); - } - - @Override - public void onStart(Progress progress) { - - } - - @Override - public void onProgress(Progress progress) { - if (tag == appInfo.getApp_url()) { - refresh(progress); - } - } - - @Override - public void onError(Progress progress) { - Throwable throwable = progress.exception; - if (throwable != null) throwable.printStackTrace(); - ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载失败,请重试"); - } - - @Override - public void onFinish(final File file, Progress progress) { - tv_download.setText("安装中"); - ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载完成"); - new Thread(new Runnable() { - @Override - public void run() { - ApkUtils.installApp(DetailsActivity.this, file.getAbsolutePath()); - } - }).start(); - } - - @Override - public void onRemove(Progress progress) { - - } - } +// class FileDownloadListener extends DownloadListener { +// +// public FileDownloadListener(Object tag) { +// super(tag); +// } +// +// @Override +// public void onStart(Progress progress) { +// +// } +// +// @Override +// public void onProgress(Progress progress) { +// if (tag == appInfo.getApp_url()) { +// refresh(progress); +// } +// } +// +// @Override +// public void onError(Progress progress) { +// Throwable throwable = progress.exception; +// if (throwable != null) throwable.printStackTrace(); +// ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载失败,请重试"); +// } +// +// @Override +// public void onFinish(final File file, Progress progress) { +// tv_download.setText("安装中"); +// ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载完成"); +// new Thread(new Runnable() { +// @Override +// public void run() { +// ApkUtils.installApp(DetailsActivity.this, file.getAbsolutePath()); +// } +// }).start(); +// } +// +// @Override +// public void onRemove(Progress progress) { +// +// } +// } public class installReceiver extends BroadcastReceiver { @Override @@ -217,7 +279,6 @@ public class DetailsActivity extends BaseActivity { if (action.equals("com.appstore.uiui.PACKAGE_ADDED") || action.equals("com.appstore.uiui.PACKAGE_REPLACED")) { String packageName = intent.getStringExtra("package"); if (packageName.equalsIgnoreCase(appInfo.getApp_package())) { - appInfo.setInstall(true); tv_download.setText("打开"); } } @@ -230,6 +291,54 @@ public class DetailsActivity extends BaseActivity { super.onDestroy(); if (myReceiver != null) { unregisterReceiver(myReceiver); + Aria.download(this).unRegister(); } } + + @Download.onTaskRunning + void onTaskRunning(DownloadTask task) { + refresh(task); + } + + @Download.onTaskComplete + void onTaskComplete(DownloadTask task) { + refresh(task); + } + + @Download.onTaskFail + void onTaskFail(DownloadTask task, Exception e) { + refresh(task); + } + + @Download.onWait + void onWait(DownloadTask task) { + refresh(task); + } + + @Download.onTaskStart + void onTaskStart(DownloadTask task) { + refresh(task); + } + + @Download.onPre + void onPre(DownloadTask task) { + refresh(task); + } + + @Download.onTaskResume + void onTaskResume(DownloadTask task) { + refresh(task); + } + + @Download.onTaskStop + void onTaskStop(DownloadTask task) { + refresh(task); + } + + @Download.onTaskCancel + void onTaskCancel(DownloadTask task) { + refresh(task); + } + + } diff --git a/app/src/main/java/com/appstore/uiui/activity/DownloadManagerActivity.java b/app/src/main/java/com/appstore/uiui/activity/DownloadManagerActivity.java index fa3c671..0fa03f4 100644 --- a/app/src/main/java/com/appstore/uiui/activity/DownloadManagerActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/DownloadManagerActivity.java @@ -3,7 +3,6 @@ package com.appstore.uiui.activity; import android.os.Handler; import android.os.Message; import android.view.View; -import android.widget.Adapter; import android.widget.ImageView; import androidx.annotation.NonNull; @@ -11,23 +10,14 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.appstore.uiui.R; -import com.appstore.uiui.adapter.AppAdapter; import com.appstore.uiui.adapter.DownloadManagerAdapter; import com.appstore.uiui.base.BaseActivity; -import com.appstore.uiui.bean.AppInfo; -import com.appstore.uiui.utils.ApkUtils; import com.appstore.uiui.utils.ToastUtil; -import com.lzy.okgo.model.Progress; -import com.lzy.okserver.OkDownload; -import com.lzy.okserver.download.DownloadListener; -import com.lzy.okserver.task.XExecutor; -import java.io.File; - -public class DownloadManagerActivity extends BaseActivity implements XExecutor.OnAllTaskEndListener { +public class DownloadManagerActivity extends BaseActivity /*implements XExecutor.OnAllTaskEndListener*/ { private RecyclerView recyclerView; private DownloadManagerAdapter adapter; - private OkDownload okDownload; +// private OkDownload okDownload; private ImageView iv_notask; @Override @@ -44,11 +34,12 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O @Override protected void initData() { - okDownload = OkDownload.getInstance(); +// okDownload = OkDownload.getInstance(); adapter = new DownloadManagerAdapter(this, handler); - adapter.updateData(DownloadManagerAdapter.TYPE_ING); +// adapter.updateData(DownloadManagerAdapter.TYPE_ING); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); + adapter.updateNotCompleteTask(); if (adapter.getItemCount() == 0) { iv_notask.setVisibility(View.VISIBLE); recyclerView.setVisibility(View.GONE); @@ -56,7 +47,7 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O iv_notask.setVisibility(View.GONE); recyclerView.setVisibility(View.VISIBLE); } - okDownload.addOnAllTaskEndListener(this); +// okDownload.addOnAllTaskEndListener(this); } @Override @@ -65,18 +56,18 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O } - @Override - public void onAllTaskEnd() { - ToastUtil.show("所有任务已完成"); - adapter.notifyDataSetChanged(); - - } +// @Override +// public void onAllTaskEnd() { +// ToastUtil.show("所有任务已完成"); +// adapter.notifyDataSetChanged(); +// +// } @Override protected void onDestroy() { super.onDestroy(); - okDownload.removeOnAllTaskEndListener(this); - adapter.unRegister(); +// okDownload.removeOnAllTaskEndListener(this); +// adapter.unRegister(); } @Override @@ -94,7 +85,7 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); if (msg.what == 100) { - adapter.updateData(DownloadManagerAdapter.TYPE_ING); +// adapter.updateData(DownloadManagerAdapter.TYPE_ING); adapter.notifyDataSetChanged(); if (adapter.getItemCount() == 0) { iv_notask.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java b/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java index e832b75..5d69263 100644 --- a/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java @@ -29,7 +29,8 @@ import java.util.List; public class KindDetailActivity extends BaseActivity implements RefreshManager.RefreshInterface { private TextView title; private String name; - private int subject, grade, type = 0; + private int subject, type = 0; + private String grade; private SmartRefreshLayout mRefreshLayout; private RecyclerView detail_rv; private AppAdapter adapter; @@ -57,10 +58,10 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R if (name.equals("娱乐")) { type = 1; } - grade = (int) SPUtils.get(this, "sn_grade", 0); + grade = (String) SPUtils.get(this, "sn_grade", ""); title.setText(name); RefreshManager.getInstance().register(this); - adapter = new AppAdapter(AppInfoList, false, getApplicationContext()); + adapter = new AppAdapter(AppInfoList, KindDetailActivity.this); adapter.setHasStableIds(true); detail_rv.setAdapter(adapter); detail_rv.setLayoutManager(new LinearLayoutManager(this)); @@ -69,10 +70,10 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R mRefreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { - OKGO.getSortApp(handler, type, grade, subject); +// OKGO.getSortApp(handler, type, grade, subject); } }); - OKGO.getSortApp(handler, type, grade, subject); +// OKGO.getSortApp(handler, type, grade, subject); } @Override @@ -91,7 +92,7 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R switch (msg.what) { case 1: AppInfoList = (List) msg.obj; - adapter.setData(checkUpdateOrInstalled(AppInfoList)); + adapter.setData(AppInfoList); adapter.notifyDataSetChanged(); mImageView.setVisibility(View.GONE); detail_rv.setVisibility(View.VISIBLE); @@ -106,13 +107,6 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R } }; - public List checkUpdateOrInstalled(List list) { - for (AppInfo appInfo : list) { - appInfo.setInstall(ApkUtils.isAvailable(getApplicationContext(), appInfo.getApp_package())); - appInfo.setUpdate(ApkUtils.checkIsUpdate(getApplicationContext(), appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); - } - return list; - } @Override public void onRefresh() { @@ -123,4 +117,6 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R public void onLoadBitMap(boolean isLoad) { } + + } diff --git a/app/src/main/java/com/appstore/uiui/activity/MainActivity.java b/app/src/main/java/com/appstore/uiui/activity/MainActivity.java index f28ccd8..a2be5bb 100644 --- a/app/src/main/java/com/appstore/uiui/activity/MainActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/MainActivity.java @@ -26,15 +26,19 @@ import androidx.viewpager.widget.ViewPager; import com.appstore.uiui.R; import com.appstore.uiui.base.BaseActivity; -import com.appstore.uiui.base.UserInfo; +import com.appstore.uiui.bean.AppInfo; +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.bean.UserInfo; import com.appstore.uiui.fragment.FeaturedFragment; import com.appstore.uiui.fragment.KindFragment; import com.appstore.uiui.fragment.ManageFragment; -import com.appstore.uiui.fragment.RankFragment; import com.appstore.uiui.jpush.ExampleUtil; import com.appstore.uiui.jpush.LocalBroadcastManager; import com.appstore.uiui.jpush.TagAliasOperatorHelper; +import com.appstore.uiui.network.NetWorkManager; import com.appstore.uiui.network.OKGO; +import com.appstore.uiui.network.api.QueryAllApp; +import com.appstore.uiui.network.api.SNInfo; import com.appstore.uiui.service.MyDownloadService; import com.appstore.uiui.utils.ApkUtils; import com.appstore.uiui.utils.LogUtils; @@ -45,10 +49,6 @@ import com.flyco.tablayout.SlidingTabLayout; import com.hjq.permissions.OnPermission; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; -import com.lzy.okgo.OkGo; -import com.lzy.okgo.callback.FileCallback; -import com.lzy.okgo.model.Progress; -import com.lzy.okgo.model.Response; import java.io.File; import java.util.ArrayList; @@ -56,6 +56,10 @@ import java.util.List; import java.util.Set; import cn.jpush.android.api.JPushInterface; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; import static com.appstore.uiui.jpush.TagAliasOperatorHelper.ACTION_ADD; import static com.appstore.uiui.jpush.TagAliasOperatorHelper.ACTION_CHECK; @@ -78,7 +82,7 @@ public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Log.e("MainActivity","onCreate"); + Log.e("MainActivity", "onCreate"); requestPermission(); registerMessageReceiver(); // used for receive msg String rid = JPushInterface.getRegistrationID(getApplicationContext()); @@ -90,7 +94,9 @@ public class MainActivity extends BaseActivity { // ToastUtil.show("Get registration fail, JPush init failed!"); // Toast.makeText(this, "Get registration fail, JPush init failed!", Toast.LENGTH_SHORT).show(); } - OKGO.getUserInfo(handler); +// OKGO.getUserInfo(handler); + getUserInfo(); + // PackageManager pm = getPackageManager(); // pm.setApplicationEnabledSetting("com.tencent.qqmusic", PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); startService(new Intent(MainActivity.this, MyDownloadService.class)); @@ -105,12 +111,13 @@ public class MainActivity extends BaseActivity { @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); - Log.e("MainActivity","onConfigurationChanged"); + Log.e("MainActivity", "onConfigurationChanged"); } + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - Log.e("MainActivity","onSaveInstanceState"); + Log.e("MainActivity", "onSaveInstanceState"); } @@ -146,7 +153,7 @@ public class MainActivity extends BaseActivity { final List fragmentList = new ArrayList<>(); fragmentList.add(new FeaturedFragment()); // fragmentList.add(new RankFragment()); - fragmentList.add(new KindFragment()); +// fragmentList.add(new KindFragment()); fragmentList.add(new ManageFragment()); mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override @@ -160,13 +167,14 @@ public class MainActivity extends BaseActivity { } }); mViewPager.setOffscreenPageLimit(3); - String titles[] = new String[]{"专属应用", "我的分类", "下载管理"}; + String titles[] = new String[]{"专属应用",/* "我的分类",*/ "下载管理"}; mSlidingTabLayout.setViewPager(mViewPager, titles); } @Override protected void initData() { - OKGO.getAllAppPackageName(handler); +// OKGO.getAllAppPackageName(handler); + getAllAppPackageName(); } @Override @@ -184,9 +192,9 @@ public class MainActivity extends BaseActivity { e.printStackTrace(); } if (null != packageInfo) { - OKGO.checkUpdateByPackage(handler, packageInfo.packageName, String.valueOf(packageInfo.versionCode)); +// OKGO.checkUpdateByPackage(handler, packageInfo.packageName, String.valueOf(packageInfo.versionCode)); } else { - OKGO.checkUpdateByPackage(handler, "com.info.sn", "0"); +// OKGO.checkUpdateByPackage(handler, "com.info.sn", "0"); } } @@ -385,27 +393,110 @@ public class MainActivity extends BaseActivity { } } + + synchronized private void getUserInfo() { + final SNInfo userInfo = NetWorkManager.getuserInfoControl(); + userInfo.getUserinfo(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + + } + + @Override + public void onNext(@io.reactivex.annotations.NonNull BaseResponse userInfoBaseResponse) { + int code = userInfoBaseResponse.code; + if (code == 200) { + UserInfo info = userInfoBaseResponse.data; + SPUtils.put(MainActivity.this, "isLogined", 1); + SPUtils.put(MainActivity.this, "admin_id", info.getAdmin_id()); + SPUtils.put(MainActivity.this, "sn_id", info.getId()); + SPUtils.put(MainActivity.this, "sn_grade", info.getGrade()); + } else if (code == -200) { + SPUtils.put(MainActivity.this, "isLogined", 0); + } else if (code == -250) { + SPUtils.put(MainActivity.this, "isLogined", 2); + } + } + + @Override + public void onError(@io.reactivex.annotations.NonNull Throwable e) { + Log.e(TAG, "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + + private void getAllAppPackageName() { + QueryAllApp allApp = NetWorkManager.getQueryAllAppControl(); + allApp.getAllApp(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + + } + + @Override + public void onNext(@io.reactivex.annotations.NonNull BaseResponse> listBaseResponse) { + int code = listBaseResponse.code; + if (code == 200) { + List infos = listBaseResponse.data; + String s = ""; + for (AppInfo info : infos) { + s += info.getApp_package() + ","; + } + if (s.endsWith(",")) { + s = s.substring(0, s.length() - 1); + } + String qch_app_forbid_before = Settings.System.getString(getContentResolver(), "qch_app_forbid"); + Log.e("getAllAppPackageName:", "qch_app_forbid_before" + qch_app_forbid_before); + boolean qch_app_forbid = Settings.System.putString(getContentResolver(), "qch_app_forbid", s); + Log.e("getAllAppPackageName", "qch_app_forbid:" + qch_app_forbid + ":" + s); + } + } + + @Override + public void onError(@io.reactivex.annotations.NonNull Throwable e) { + Log.e(TAG, "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + private Handler handler = new Handler() { @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); switch (msg.what) { - case 0: - SPUtils.put(MainActivity.this, "isLogined", 0); - break; - case 1: - SPUtils.put(MainActivity.this, "isLogined", 1); - UserInfo userInfo = (UserInfo) msg.obj; - SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id()); - SPUtils.put(MainActivity.this, "sn_id", userInfo.getId()); - SPUtils.put(MainActivity.this, "sn_grade", userInfo.getSn_grade()); - break; - case 2: - SPUtils.put(MainActivity.this, "isLogined", 2); - break; +// case 0: +// SPUtils.put(MainActivity.this, "isLogined", 0); +// break; +// case 1: +// SPUtils.put(MainActivity.this, "isLogined", 1); +// UserInfo userInfo = (UserInfo) msg.obj; +// SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id()); +// SPUtils.put(MainActivity.this, "sn_id", userInfo.getId()); +// SPUtils.put(MainActivity.this, "sn_grade", userInfo.getGrade()); +// break; +// case 2: +// SPUtils.put(MainActivity.this, "isLogined", 2); +// break; case 200: String url = (String) msg.obj; - getFile(url); +// getFile(url); break; case 201: String apppackage = (String) msg.obj; @@ -413,7 +504,6 @@ public class MainActivity extends BaseActivity { if (Settings.System.putString(getContentResolver(), "qch_app_forbid", apppackage)) { Log.e("fht", "app package write successful"); } - break; case 202: break; @@ -421,32 +511,32 @@ public class MainActivity extends BaseActivity { } }; - private void getFile(String url) { - OkGo.get(url) - .execute(new FileCallback() { - @Override - public void onSuccess(final Response response) { -// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video"); - new Thread(new Runnable() { - @Override - public void run() { - ApkUtils.installApp(MainActivity.this, response.body().getAbsolutePath()); - } - }).start(); - LogUtils.e("getFile", "download file successful,now installing"); - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getFile", "File download Failure"); - } - - @Override - public void downloadProgress(Progress progress) { - super.downloadProgress(progress); - LogUtils.e("getFile", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed); - } - }); - } +// private void getFile(String url) { +// OkGo.get(url) +// .execute(new FileCallback() { +// @Override +// public void onSuccess(final Response response) { +//// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video"); +// new Thread(new Runnable() { +// @Override +// public void run() { +// ApkUtils.installApp(MainActivity.this, response.body().getAbsolutePath()); +// } +// }).start(); +// LogUtils.e("getFile", "download file successful,now installing"); +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getFile", "File download Failure"); +// } +// +// @Override +// public void downloadProgress(Progress progress) { +// super.downloadProgress(progress); +// LogUtils.e("getFile", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed); +// } +// }); +// } } diff --git a/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java b/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java index e5bb30e..a62eb70 100644 --- a/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java @@ -47,7 +47,7 @@ public class SearcherActivity extends BaseActivity { @Override protected void initData() { - madapter = new AppAdapter(mAppInfoList, false, getApplicationContext()); + madapter = new AppAdapter(mAppInfoList, SearcherActivity.this); madapter.setHasStableIds(true); recyclerView.setAdapter(madapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -59,7 +59,7 @@ public class SearcherActivity extends BaseActivity { @Override public boolean onQueryTextSubmit(String query) { LogUtils.e("icon_serach", query); - OKGO.searchAppbyName(handler, query); +// OKGO.searchAppbyName(handler, query); return false; } @@ -83,18 +83,11 @@ public class SearcherActivity extends BaseActivity { switch (msg.what) { case 1: mAppInfoList = (List) msg.obj; - madapter.setData(checkUpdateOrInstalled(mAppInfoList)); + madapter.setData(mAppInfoList); madapter.notifyDataSetChanged(); break; } } }; - public List checkUpdateOrInstalled(List list) { - for (AppInfo appInfo : list) { - appInfo.setInstall(ApkUtils.isAvailable(getApplicationContext(), appInfo.getApp_package())); - appInfo.setUpdate(ApkUtils.checkIsUpdate(getApplicationContext(), appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); - } - return list; - } } diff --git a/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java b/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java index 2c81cc9..8d00da9 100644 --- a/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java +++ b/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java @@ -2,8 +2,6 @@ package com.appstore.uiui.adapter; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,20 +12,22 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.appstore.uiui.R; import com.appstore.uiui.activity.DetailsActivity; +import com.appstore.uiui.base.FilePath; import com.appstore.uiui.bean.AppInfo; -import com.appstore.uiui.bean.GlideCircleWithBorder; -import com.appstore.uiui.listener.LogDownloadListener; import com.appstore.uiui.utils.ApkUtils; -import com.appstore.uiui.utils.ToastUtil; +import com.appstore.uiui.utils.FileUtils; +import com.appstore.uiui.utils.StorageUtils; +import com.arialyy.annotations.Download; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.download.DownloadEntity; +import com.arialyy.aria.core.inf.IEntity; +import com.arialyy.aria.core.task.DownloadTask; import com.bumptech.glide.Glide; -import com.lzy.okgo.OkGo; -import com.lzy.okgo.model.Progress; -import com.lzy.okgo.request.GetRequest; -import com.lzy.okserver.OkDownload; -import com.lzy.okserver.download.DownloadListener; -import com.lzy.okserver.download.DownloadTask; + import java.io.File; import java.util.List; @@ -39,19 +39,15 @@ import java.util.List; public class AppAdapter extends RecyclerView.Adapter { private List mAppInfoList; - private Context mContext; - - private boolean isShowOrder; - - private boolean isNotLoadBitmap = false; - + private DownloadTask mDownloadTask; //order代表是否显示所在的位置,1.2.3. - public AppAdapter(List appInfoList, boolean isShowOrder, Context context) { + + + public AppAdapter(List appInfoList, Context context) { this.mContext = context; this.mAppInfoList = appInfoList; - this.isShowOrder = isShowOrder; } @Override @@ -61,41 +57,18 @@ public class AppAdapter extends RecyclerView.Adapter { } @Override - public void onBindViewHolder(Holder holder, final int position) { - + public void onBindViewHolder(final Holder holder, final int position) { + Aria.download(this).register(); final AppInfo appInfo = mAppInfoList.get(position); - final DownloadTask downloadTask = OkDownload.getInstance().getTask(appInfo.getApp_url()); - holder.setTag(appInfo.getApp_url()); - if (downloadTask != null) { - downloadTask.register(new ListDownloadListener(appInfo.getApp_url(), holder)); - holder.setTask(downloadTask); -// holder.bind(); - holder.refresh(downloadTask.progress); - } - - - - if (!isNotLoadBitmap) { - Glide.with(mContext) - .asBitmap() - .load(appInfo.getApp_img()) - .placeholder(R.drawable.ic_place_holder) - .transform(new GlideCircleWithBorder(mContext)) - .into(holder.ivIcon); - } else { - Glide.with(mContext) - .load(R.drawable.ic_place_holder) - .transform(new GlideCircleWithBorder(mContext)) - .into(holder.ivIcon); - } - + Glide.with(mContext) + .asBitmap() + .load(appInfo.getApp_img()) +// .placeholder(R.drawable.ic_place_holder) +// .transform(new GlideCircleWithBorder(mContext)) + .into(holder.ivIcon); holder.tvCompany.setText(appInfo.getApp_developer()); - if (isShowOrder) { - holder.tvName.setText((position + 1) + "." + appInfo.getApp_name()); - } else { - holder.tvName.setText(appInfo.getApp_name()); - } - holder.tvSize.setText(appInfo.getApp_size() + "M"); + holder.tvName.setText(appInfo.getApp_name()); + holder.tvSize.setText(StorageUtils.byteToMB(appInfo.getApp_size())); holder.ratingBar.setRating((float) appInfo.getApp_score()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override @@ -106,49 +79,83 @@ public class AppAdapter extends RecyclerView.Adapter { mContext.startActivity(intent); } }); - - if (appInfo.isInstall()) { - if (appInfo.isUpdate()) { + final boolean installed = ApkUtils.isInstalled(mContext, appInfo.getApp_package()); + final boolean update = ApkUtils.isUpdate(mContext, appInfo.getApp_package(), appInfo.getApp_version_code()); + if (installed) { + if (update) { holder.btnDownLoad.setText("更新"); holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_color)); - holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_style_none)); + holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_download)); } else { holder.btnDownLoad.setText("打开"); holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_color)); - holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_style_none)); + holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_download)); } } else { holder.btnDownLoad.setText("安装"); holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_color)); - holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_style_none)); - if (downloadTask != null) { - holder.refresh(downloadTask.progress); + holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_download)); + if (null != mDownloadTask) { + if (mDownloadTask.getKey().equals(appInfo.getApp_url())) { + holder.refresh(mDownloadTask); + } + } else { + DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(appInfo.getApp_url()); + if (null != entity) { + holder.refreshEntity(entity); + } } } holder.btnDownLoad.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (appInfo.isInstall() && !appInfo.isUpdate()) { + if (installed && !update) { ApkUtils.openApp(mContext, appInfo.getApp_package()); } else { - downloadApk(appInfo); + DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(appInfo.getApp_url()); + if (null != entity) { + switch (entity.getState()) { + case IEntity.STATE_OTHER: + case IEntity.STATE_FAIL: + case IEntity.STATE_STOP: + case IEntity.STATE_WAIT: + case IEntity.STATE_CANCEL: + Aria.download(this).load(entity.getId()).resume(); + break; + case IEntity.STATE_RUNNING: + Aria.download(this).load(entity.getId()).stop(); + break; + case IEntity.STATE_PRE: + break; + case IEntity.STATE_POST_PRE: + break; + case IEntity.STATE_COMPLETE: + File file = new File(entity.getFilePath()); + if (file.exists()) { + holder.btnDownLoad.setText("安装中"); + ApkUtils.installApp(mContext, entity.getFilePath()); + } else { + Aria.download(this).load(entity.getId()).cancel(true); + JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo); + FileUtils.ariaDownload(mContext, appInfo.getApp_url(), jsonObject); + } + + break; + } + } else { +// downloadApk(appInfo); + JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo); + FileUtils.ariaDownload(mContext, appInfo.getApp_url(), jsonObject); +// Aria.download(this) +// .load(appInfo.getApp_url()) +// .setFilePath(FilePath.FileDownloadPath + File.separator + FileUtils.getFileNamefromURL(appInfo.getApp_url()), true) +// .create(); + } } } }); } - private void downloadApk(AppInfo appInfo) { - GetRequest request = OkGo.get(appInfo.getApp_url()); - //这里第一个参数是tag,代表下载任务的唯一标识,传任意字符串都行,需要保证唯一,我这里用url作为了tag - OkDownload.request(appInfo.getApp_url(), request)// -// .priority(apk.priority)// - .extra1(appInfo)// - .save()// - .register(new LogDownloadListener())// - .start(); - notifyDataSetChanged(); - } - @Override public int getItemCount() { return mAppInfoList == null ? 0 : mAppInfoList.size(); @@ -165,10 +172,6 @@ public class AppAdapter extends RecyclerView.Adapter { TextView tvCompany, tvName, tvSize; Button btnDownLoad; RatingBar ratingBar; - // TextView tvInstalled; - - private DownloadTask task; - private String tag; public Holder(View itemView) { super(itemView); @@ -178,54 +181,65 @@ public class AppAdapter extends RecyclerView.Adapter { tvSize = itemView.findViewById(R.id.app_tv_size); btnDownLoad = itemView.findViewById(R.id.app_btn_download); ratingBar = itemView.findViewById(R.id.app_rating_bar); -// tvInstalled = itemView.findViewById(R.id.app_tv_installed); } - public void bind() { - - } - - void refresh(Progress progress) { - switch (progress.status) { - case Progress.NONE: + void refresh(DownloadTask task) { + switch (task.getState()) { + case IEntity.STATE_OTHER: btnDownLoad.setText("安装"); break; - case Progress.PAUSE: - btnDownLoad.setText("继续"); - break; - case Progress.ERROR: + case IEntity.STATE_FAIL: btnDownLoad.setText("出错"); break; - case Progress.WAITING: + case IEntity.STATE_COMPLETE: + btnDownLoad.setText("安装"); + break; + case IEntity.STATE_STOP: + btnDownLoad.setText("继续"); + break; + case IEntity.STATE_WAIT: btnDownLoad.setText("等待"); break; - case Progress.FINISH: - btnDownLoad.setText("安装中"); + case IEntity.STATE_RUNNING: + btnDownLoad.setText(task.getPercent() + "%"); break; - case Progress.LOADING: - btnDownLoad.setText((int) (progress.fraction * 100) + "%"); + case IEntity.STATE_PRE: + break; + case IEntity.STATE_POST_PRE: + break; + case IEntity.STATE_CANCEL: break; } - } - void setTask(DownloadTask task) { - this.task = task; + void refreshEntity(DownloadEntity entity) { + switch (entity.getState()) { + case IEntity.STATE_OTHER: + btnDownLoad.setText("安装"); + break; + case IEntity.STATE_FAIL: + btnDownLoad.setText("出错"); + break; + case IEntity.STATE_COMPLETE: + btnDownLoad.setText("安装"); + break; + case IEntity.STATE_STOP: + btnDownLoad.setText("继续"); + break; + case IEntity.STATE_WAIT: + btnDownLoad.setText("等待"); + break; + case IEntity.STATE_RUNNING: + btnDownLoad.setText(entity.getPercent() + "%"); + break; + case IEntity.STATE_PRE: + break; + case IEntity.STATE_POST_PRE: + break; + case IEntity.STATE_CANCEL: + break; + } } - - void setTag(String tag) { - this.tag = tag; - } - - String getTag() { - return tag; - } - } - - - public void setNotLoadBitmap(boolean isNotLoadBitmap) { - this.isNotLoadBitmap = isNotLoadBitmap; - notifyDataSetChanged(); } public void setData(List appInfos) { @@ -233,49 +247,105 @@ public class AppAdapter extends RecyclerView.Adapter { notifyDataSetChanged(); } - private class ListDownloadListener extends DownloadListener { + // private class ListDownloadListener extends DownloadListener { +// +// private Holder holder; +// +// ListDownloadListener(Object tag, Holder holder) { +// super(tag); +// this.holder = holder; +// } +// +// @Override +// public void onStart(Progress progress) { +// +// } +// +// @Override +// public void onProgress(Progress progress) { +// if (tag == holder.getTag()) { +// holder.refresh(progress); +// } +// } +// +// @Override +// public void onError(Progress progress) { +// Throwable throwable = progress.exception; +// if (throwable != null) throwable.printStackTrace(); +// ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载失败,请重试"); +// } +// +// @Override +// public void onFinish(final File file, Progress progress) { +// ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载完成"); +// new Thread(new Runnable() { +// @Override +// public void run() { +// ApkUtils.installApp(mContext, file.getAbsolutePath()); +// } +// }).start(); +// } +// +// @Override +// public void onRemove(Progress progress) { +// +// } +// } - private Holder holder; - - ListDownloadListener(Object tag, Holder holder) { - super(tag); - this.holder = holder; - } - - @Override - public void onStart(Progress progress) { - - } - - @Override - public void onProgress(Progress progress) { - if (tag == holder.getTag()) { - holder.refresh(progress); + private void ItemChanged(DownloadTask task) { + mDownloadTask = task; +// notifyDataSetChanged(); + for (int i = 0; i < mAppInfoList.size(); i++) { + if (mAppInfoList.get(i).getApp_url().equals(task.getKey())) { + notifyItemChanged(i); } } - - @Override - public void onError(Progress progress) { - Throwable throwable = progress.exception; - if (throwable != null) throwable.printStackTrace(); - ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载失败,请重试"); - } - - @Override - public void onFinish(final File file, Progress progress) { - ToastUtil.show(((AppInfo) progress.extra1).getApp_name() + "\t下载完成"); - new Thread(new Runnable() { - @Override - public void run() { - ApkUtils.installApp(mContext, file.getAbsolutePath()); - } - }).start(); - } - - @Override - public void onRemove(Progress progress) { - - } } + @Download.onTaskRunning + void onTaskRunning(DownloadTask task) { + ItemChanged(task); + } + + @Download.onTaskComplete + void onTaskComplete(DownloadTask task) { + ItemChanged(task); + } + + @Download.onWait + void onWait(DownloadTask task) { + ItemChanged(task); + } + + @Download.onTaskStart + void onTaskStart(DownloadTask task) { + ItemChanged(task); + } + + @Download.onPre + void onPre(DownloadTask task) { + ItemChanged(task); + } + + @Download.onTaskResume + void onTaskResume(DownloadTask task) { + ItemChanged(task); + } + + @Download.onTaskStop + void onTaskStop(DownloadTask task) { + ItemChanged(task); + } + + @Download.onTaskCancel + void onTaskCancel(DownloadTask task) { + ItemChanged(task); + } + + @Download.onTaskFail + void onTaskFail(DownloadTask task, Exception e) { + ItemChanged(task); + } + + } diff --git a/app/src/main/java/com/appstore/uiui/adapter/DownloadManagerAdapter.java b/app/src/main/java/com/appstore/uiui/adapter/DownloadManagerAdapter.java index 76e42a4..e376d27 100644 --- a/app/src/main/java/com/appstore/uiui/adapter/DownloadManagerAdapter.java +++ b/app/src/main/java/com/appstore/uiui/adapter/DownloadManagerAdapter.java @@ -2,33 +2,32 @@ package com.appstore.uiui.adapter; import android.content.Context; import android.os.Handler; -import android.text.format.Formatter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.appstore.uiui.R; -import com.appstore.uiui.bean.AppInfo; -import com.appstore.uiui.bean.GlideCircleWithBorder; -import com.appstore.uiui.listener.LogDownloadListener; +import com.appstore.uiui.utils.ApkUtils; +import com.appstore.uiui.utils.FileUtils; +import com.appstore.uiui.utils.Utils; import com.appstore.uiui.view.NumberProgressBar; +import com.arialyy.annotations.Download; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.download.DownloadEntity; +import com.arialyy.aria.core.inf.IEntity; +import com.arialyy.aria.core.task.DownloadTask; import com.bumptech.glide.Glide; -import com.lzy.okgo.db.DownloadManager; -import com.lzy.okgo.model.Progress; -import com.lzy.okserver.OkDownload; -import com.lzy.okserver.download.DownloadListener; -import com.lzy.okserver.download.DownloadTask; import java.io.File; import java.util.List; -import java.util.Map; public class DownloadManagerAdapter extends RecyclerView.Adapter { @@ -38,8 +37,8 @@ public class DownloadManagerAdapter extends RecyclerView.Adapter values; - private int type; + private List mEntityList; + private DownloadTask mDownloadTask; private final LayoutInflater mInflater; private Handler mhandler; @@ -50,14 +49,25 @@ public class DownloadManagerAdapter extends RecyclerView.Adapter list) { + this.mEntityList = list; notifyDataSetChanged(); } @@ -70,40 +80,80 @@ public class DownloadManagerAdapter extends RecyclerView.Adapter taskMap = OkDownload.getInstance().getTaskMap(); - for (DownloadTask task : taskMap.values()) { - task.unRegister(createTag(task)); + Aria.download(this).register(); + final DownloadEntity entity = mEntityList.get(position); +// DownloadTask task = values.get(position); +// String tag = createTag(task); +// task.register(new ListDownloadListener(tag, holder))// +// .register(new LogDownloadListener()); +// holder.setTag(tag); +// holder.setTask(task); +// holder.bind(); +// holder.refresh(task.progress); + JSONObject jsonObject = JSONObject.parseObject(Aria.download(this).load(entity.getId()).getExtendField()); + Glide.with(mContext) + .asBitmap() + .load(jsonObject.getString("app_img")) +// .placeholder(R.drawable.ic_place_holder) +// .transform(new GlideCircleWithBorder(mContext)) + .into(holder.icon); + holder.name.setText(jsonObject.getString("app_name")); + holder.pbProgress.setMax(100); + holder.pbProgress.setProgress(entity.getPercent()); + long progress = entity.getCurrentProgress(); + holder.downloadSize.setText(FileUtils.formatFileSize(progress) + "/" + entity.getConvertFileSize()); + holder.refreshEntity(entity); + holder.start.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + switch (entity.getState()) { + case IEntity.STATE_OTHER: + case IEntity.STATE_FAIL: + case IEntity.STATE_STOP: + case IEntity.STATE_WAIT: + case IEntity.STATE_CANCEL: + Aria.download(this).load(entity.getId()).resume(); + break; + case IEntity.STATE_RUNNING: + Aria.download(this).load(entity.getId()).stop(); + break; + case IEntity.STATE_PRE: + break; + case IEntity.STATE_POST_PRE: + break; + case IEntity.STATE_COMPLETE: + break; + } + } + }); + if (null != mDownloadTask && mDownloadTask.getEntity().getUrl().equals(entity.getUrl())) { + holder.refresh(mDownloadTask); } } - private String createTag(DownloadTask task) { - return type + "_" + task.progress.tag; - } +// public void unRegister() { +// Map taskMap = OkDownload.getInstance().getTaskMap(); +// for (DownloadTask task : taskMap.values()) { +// task.unRegister(createTag(task)); +// } +// } + +// private String createTag(DownloadTask task) { +// return type + "_" + task.progress.tag; +// } @Override public int getItemCount() { - return values == null ? 0 : values.size(); + return null == mEntityList ? 0 : mEntityList.size(); } - class Holder extends RecyclerView.ViewHolder { + public class Holder extends RecyclerView.ViewHolder { ImageView icon, remove; TextView name, state, downloadSize; Button start; NumberProgressBar pbProgress; - private DownloadTask task; + // private DownloadTask task; private String tag; Holder(@NonNull View itemView) { @@ -117,145 +167,281 @@ public class DownloadManagerAdapter extends RecyclerView.Adapter { @@ -45,14 +34,14 @@ public class UpdateAppAdapter extends RecyclerView.Adapter request = OkGo.get(appInfo.getURL()); - //这里第一个参数是tag,代表下载任务的唯一标识,传任意字符串都行,需要保证唯一,我这里用url作为了tag - OkDownload.request(appInfo.getURL(), request)// -// .priority(apk.priority)// - .extra1(appInfo.getAppInfo())// - .save()// - .register(new LogDownloadListener())// - .start(); - notifyDataSetChanged(); - } +// private void downloadApk(UpdateAppInfo appInfo) { +// GetRequest request = OkGo.get(appInfo.getURL()); +// //这里第一个参数是tag,代表下载任务的唯一标识,传任意字符串都行,需要保证唯一,我这里用url作为了tag +// OkDownload.request(appInfo.getURL(), request)// +//// .priority(apk.priority)// +// .extra1(appInfo.getAppInfo())// +// .save()// +// .register(new LogDownloadListener())// +// .start(); +// notifyDataSetChanged(); +// } @Override public int getItemCount() { @@ -98,7 +87,7 @@ public class UpdateAppAdapter extends RecyclerView.Adapter implements Serializable { + + private static final long serialVersionUID = 5468533687801294972L; + public int code; - public String data; public String msg; -} + public T data; + + @NonNull + @Override + public String toString() { + return "{\n" +// + "\tcode=" + code + "\n" +// + "\tmsg='" + msg + "\'\n" +// + "\tdata=" + data + "\n" +// + '}'; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/appstore/uiui/bean/ImageUrl.java b/app/src/main/java/com/appstore/uiui/bean/ImageUrl.java new file mode 100644 index 0000000..12b285b --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/bean/ImageUrl.java @@ -0,0 +1,13 @@ +package com.appstore.uiui.bean; + +public class ImageUrl { + String img_url; + + public String getImg_url() { + return img_url; + } + + public void setImg_url(String img_url) { + this.img_url = img_url; + } +} diff --git a/app/src/main/java/com/appstore/uiui/base/UserInfo.java b/app/src/main/java/com/appstore/uiui/bean/UserInfo.java similarity index 60% rename from app/src/main/java/com/appstore/uiui/base/UserInfo.java rename to app/src/main/java/com/appstore/uiui/bean/UserInfo.java index 4adf333..25201b6 100644 --- a/app/src/main/java/com/appstore/uiui/base/UserInfo.java +++ b/app/src/main/java/com/appstore/uiui/bean/UserInfo.java @@ -1,27 +1,30 @@ -package com.appstore.uiui.base; +package com.appstore.uiui.bean; import java.io.Serializable; public class UserInfo implements Serializable { - private String id; + + private static final long serialVersionUID = -5268233433601073239L; + + private int id; private String sn_value; private String sn_name; private String sn_phone; - private String sn_school; - private int sn_grade; + private String grade; private String sn_app; private String sn_area; - private int member_id; - private int is_delete; - private int is_reset; - private int is_lock; + private int admin_id; + private String is_delete; + private String is_reset; + private String is_lock; + private String school; private String createtime; - public String getId() { + public int getId() { return id; } - public void setId(String id) { + public void setId(int id) { this.id = id; } @@ -49,20 +52,12 @@ public class UserInfo implements Serializable { this.sn_phone = sn_phone; } - public String getSn_school() { - return sn_school; + public String getGrade() { + return grade; } - public void setSn_school(String sn_school) { - this.sn_school = sn_school; - } - - public int getSn_grade() { - return sn_grade; - } - - public void setSn_grade(int sn_grade) { - this.sn_grade = sn_grade; + public void setGrade(String grade) { + this.grade = grade; } public String getSn_app() { @@ -81,35 +76,35 @@ public class UserInfo implements Serializable { this.sn_area = sn_area; } - public int getMember_id() { - return member_id; + public int getAdmin_id() { + return admin_id; } - public void setMember_id(int member_id) { - this.member_id = member_id; + public void setAdmin_id(int admin_id) { + this.admin_id = admin_id; } - public int getIs_delete() { + public String getIs_delete() { return is_delete; } - public void setIs_delete(int is_delete) { + public void setIs_delete(String is_delete) { this.is_delete = is_delete; } - public int getIs_reset() { + public String getIs_reset() { return is_reset; } - public void setIs_reset(int is_reset) { + public void setIs_reset(String is_reset) { this.is_reset = is_reset; } - public int getIs_lock() { + public String getIs_lock() { return is_lock; } - public void setIs_lock(int is_lock) { + public void setIs_lock(String is_lock) { this.is_lock = is_lock; } @@ -120,4 +115,12 @@ public class UserInfo implements Serializable { public void setCreatetime(String createtime) { this.createtime = createtime; } + + public String getSchool() { + return school; + } + + public void setSchool(String school) { + this.school = school; + } } diff --git a/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java b/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java index a3b9fd5..c506359 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java @@ -8,12 +8,14 @@ import android.content.res.Configuration; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; import android.view.View; import android.widget.ImageView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; import com.appstore.uiui.R; import com.appstore.uiui.adapter.AppAdapter; @@ -22,10 +24,15 @@ import com.appstore.uiui.base.LazyLoadFragment; import com.appstore.uiui.base.RefreshManager; import com.appstore.uiui.bean.AppInfo; import com.appstore.uiui.bean.AppInfos; +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.bean.ImageUrl; +import com.appstore.uiui.network.NetWorkManager; import com.appstore.uiui.network.OKGO; +import com.appstore.uiui.network.api.BannerImage; +import com.appstore.uiui.network.api.QueryAllApp; import com.appstore.uiui.utils.ApkUtils; import com.appstore.uiui.utils.LogUtils; -import com.blankj.utilcode.util.ToastUtils; +import com.appstore.uiui.utils.Utils; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; @@ -39,6 +46,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; + /** * Created by asus on 2017/10/23. @@ -58,6 +71,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager private installReceiver myReceiver; private Context mContext; + private String TAG = "FeaturedFragment"; public FeaturedFragment() { @@ -71,9 +85,15 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager @Override public void onStop() { super.onStop(); + + } + + @Override + public void onDestroy() { + super.onDestroy(); if (myReceiver != null) { try { - mContext.unregisterReceiver(myReceiver); + getActivity().unregisterReceiver(myReceiver); } catch (Exception e) { LogUtils.e("onStop", e.getMessage()); } @@ -81,10 +101,9 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager } @Override - public void onStart() { - super.onStart(); + public void initDatas() { mContext = this.getActivity(); - adapter = new AppAdapter(newAppInfoList, false, getContext()); + adapter = new AppAdapter(newAppInfoList, getActivity()); adapter.setHasStableIds(true); int orientation = 0; orientation = mContext.getResources().getConfiguration().orientation; @@ -109,30 +128,39 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager }); mRefreshLayout.autoRefresh(); - adapter.setData(checkUpdateOrInstalled(newAppInfoList)); + adapter.setData(newAppInfoList); adapter.notifyDataSetChanged(); - if (myReceiver == null) { - myReceiver = new installReceiver(); - IntentFilter filter = new IntentFilter(); - filter.addAction("com.appstore.uiui.PACKAGE_ADDED"); - filter.addAction("com.appstore.uiui.PACKAGE_REPLACED"); - filter.addAction("com.appstore.uiui.PACKAGE_REMOVED"); - filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - mContext.registerReceiver(myReceiver, filter); - } + } + @Override + public void onStart() { + super.onStart(); + } + + @Override public void onResume() { super.onResume(); adapter.notifyDataSetChanged(); - + if (myReceiver == null) { + myReceiver = new installReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REPLACED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addDataScheme("package"); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + getActivity().registerReceiver(myReceiver, filter); + } } @Override public void initViews(View view) { mRvResult = view.findViewById(R.id.featured_rv_result); + ((SimpleItemAnimator) mRvResult.getItemAnimator()).setSupportsChangeAnimations(false); +// mRvResult.setItemAnimator(null); imageView = view.findViewById(R.id.imageView); mRefreshLayout = view.findViewById(R.id.featured_refresh_layout); RefreshManager.getInstance().register(this); @@ -149,14 +177,13 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager .setOnPageClickListener(new BannerViewPager.OnPageClickListener() { @Override public void onPageClick(int position) { - ToastUtils.showShort("position:" + position); + } }) .setInterval(5000); isNotLoadBitmap = false; - } @Override @@ -166,8 +193,10 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager } synchronized private void initAPPData(final Handler handler) { - OKGO.getAllAppInfo(handler); - OKGO.getBannerImg(handler); +// OKGO.getAllAppInfo(handler); + getAllAppInfo(); +// OKGO.getBannerImg(handler); + getBannerImg(); } @@ -178,7 +207,102 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager @Override public void onLoadBitMap(boolean isLoad) { - adapter.setNotLoadBitmap(isLoad); + } + + + private void getAllAppInfo() { + QueryAllApp allApp = NetWorkManager.getQueryAllAppControl(); + allApp.getAllApp(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + int code = listBaseResponse.code; + if (code == 200) { + List infos = listBaseResponse.data; + newAppInfoList = infos; + mRvResult.setVisibility(View.VISIBLE); + imageView.setVisibility(View.GONE); + adapter.setData(newAppInfoList); + adapter.notifyDataSetChanged(); + } else { + mRvResult.setVisibility(View.GONE); + imageView.setVisibility(View.VISIBLE); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getAllAppInfo", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + mRefreshLayout.finishRefresh(); + } + }); + } + + private void getBannerImg() { + BannerImage bannerImage = NetWorkManager.getBannerImageControl(); + bannerImage.getImageURL(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + int code = listBaseResponse.code; + if (code == 200) { + List urlList = listBaseResponse.data; + if (null != urlList || urlList.size() != 0) { + List list = new ArrayList<>(); + for (ImageUrl url : urlList) { + list.add(url.getImg_url()); + } + mViewPager + .setPageMargin(getResources().getDimensionPixelOffset(R.dimen.dp_5)) + .setRevealWidth(BannerUtils.dp2px(0)) + .setPageStyle(PageStyle.MULTI_PAGE) + .setHolderCreator(new HolderCreator() { + @Override + public BannerViewHolder createViewHolder() { + return new BannerViewHolder(); + } + }) + .setIndicatorColor(getResources().getColor(R.color.white), getResources().getColor(R.color.colorAccent)) + .setOnPageClickListener(new BannerViewPager.OnPageClickListener() { + @Override + public void onPageClick(int position) { + + } + }) + .setInterval(5000) + .create(list); + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getBannerImg", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + mRefreshLayout.finishRefresh(); + } + }); } Handler handler = new Handler() { @@ -186,17 +310,17 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { - case 0: - mRvResult.setVisibility(View.GONE); - imageView.setVisibility(View.VISIBLE); - break; - case 1: - mRvResult.setVisibility(View.VISIBLE); - imageView.setVisibility(View.GONE); - newAppInfoList = (List) msg.obj; - adapter.setData(checkUpdateOrInstalled(newAppInfoList)); - adapter.notifyDataSetChanged(); - break; +// case 0: +// mRvResult.setVisibility(View.GONE); +// imageView.setVisibility(View.VISIBLE); +// break; +// case 1: +// mRvResult.setVisibility(View.VISIBLE); +// imageView.setVisibility(View.GONE); +// newAppInfoList = (List) msg.obj; +// adapter.setData(checkUpdateOrInstalled(newAppInfoList)); +// adapter.notifyDataSetChanged(); +// break; case 200: List list = (List) msg.obj; mViewPager @@ -213,7 +337,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager .setOnPageClickListener(new BannerViewPager.OnPageClickListener() { @Override public void onPageClick(int position) { - ToastUtils.showShort("position:" + position); + } }) .setInterval(5000) @@ -224,22 +348,25 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager } }; - public List checkUpdateOrInstalled(List list) { - for (AppInfo appInfo : list) { - appInfo.setInstall(ApkUtils.isAvailable(mContext, appInfo.getApp_package())); - appInfo.setUpdate(ApkUtils.checkIsUpdate(mContext, appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); - } - return list; - } +// public List checkUpdateOrInstalled(List list) { +// for (AppInfo appInfo : list) { +// appInfo.setInstall(ApkUtils.isAvailable(mContext, appInfo.getApp_package())); +// appInfo.setUpdate(ApkUtils.checkIsUpdate(mContext, appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); +// } +// return list; +// } public class installReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); //接收安装广播 - if (action.equals("com.appstore.uiui.PACKAGE_ADDED") || action.equals("com.appstore.uiui.PACKAGE_REMOVED") || action.equals("com.appstore.uiui.PACKAGE_REPLACED")) { - adapter.setData(checkUpdateOrInstalled(newAppInfoList)); + if (action.equals(Intent.ACTION_PACKAGE_ADDED) + || action.equals(Intent.ACTION_PACKAGE_REPLACED) + || action.equals(Intent.ACTION_PACKAGE_REMOVED)) { +// adapter.setData(checkUpdateOrInstalled(newAppInfoList)); adapter.notifyDataSetChanged(); + Log.e("installReceiver", action); } } diff --git a/app/src/main/java/com/appstore/uiui/fragment/KindFragment.java b/app/src/main/java/com/appstore/uiui/fragment/KindFragment.java index ce8ffad..cad55cc 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/KindFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/KindFragment.java @@ -20,7 +20,6 @@ import com.appstore.uiui.base.BaseFragment; import com.appstore.uiui.base.RefreshManager; import com.appstore.uiui.bean.Kind; import com.appstore.uiui.network.OKGO; -import com.lzy.okgo.OkGo; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; @@ -80,7 +79,7 @@ public class KindFragment extends BaseFragment implements RefreshManager.Refresh } private void initData() { - OKGO.getSubClassfy(mHandler); +// OKGO.getSubClassfy(mHandler); } private Handler mHandler = new Handler() { diff --git a/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java b/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java index 0301c93..c93f07d 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java @@ -85,6 +85,11 @@ public class ManageFragment extends LazyLoadFragment { } + @Override + public void initDatas() { + + } + @Override public void loadData(Bundle savedInstanceState) { @@ -98,7 +103,7 @@ public class ManageFragment extends LazyLoadFragment { } synchronized private void initAPPData(final Handler handler) { - OKGO.getAllAppInfo(handler); +// OKGO.getAllAppInfo(handler); } synchronized private List getLocalApp() { @@ -147,13 +152,13 @@ public class ManageFragment extends LazyLoadFragment { for (LocalApp app : localAppList) { if (packageNameList.contains(app.getPackageName())) { AppInfo info = list.get(packageNameList.indexOf(app.getPackageName())); - if (ApkUtils.checkIsUpdate(mContext, info.getApp_package(), Integer.parseInt(info.getApp_version_code()))) { + if (ApkUtils.checkIsUpdate(mContext, info.getApp_package(), info.getApp_version_code())) { UpdateAppInfo updateAppInfo = new UpdateAppInfo(); updateAppInfo.setVersionCode(app.getVersionCode()); updateAppInfo.setVersionName(app.getVersion()); updateAppInfo.setAppName(app.getAppName()); updateAppInfo.setIcon(app.getIcon()); - updateAppInfo.setNewVersionCode(Integer.parseInt(info.getApp_version_code())); + updateAppInfo.setNewVersionCode(info.getApp_version_code()); updateAppInfo.setNewVersionName(info.getApp_version_name()); updateAppInfo.setURL(info.getApp_url()); updateAppInfo.setPackageName(info.getApp_package()); diff --git a/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java b/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java index 80fdc90..19756e2 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java @@ -51,6 +51,11 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref initView(); } + @Override + public void initDatas() { + + } + @Override public void loadData(Bundle savedInstanceState) { @@ -59,7 +64,7 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref @Override public void onStart() { super.onStart(); - OKGO.getRankApp(handler); +// OKGO.getRankApp(handler); LogUtils.e("fht", "RankFragment onStart"); } @@ -93,7 +98,7 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref private void initView() { mAppInfoList = new ArrayList<>(); - mAppAdapter = new AppAdapter(mAppInfoList, true, getContext()); + mAppAdapter = new AppAdapter(mAppInfoList, getActivity()); mRvResult.setLayoutManager(new LinearLayoutManager(getActivity())); mRvResult.setAdapter(mAppAdapter); mRefreshLayout.setEnableRefresh(true); @@ -101,7 +106,7 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref mRefreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { - OKGO.getRankApp(handler); +// OKGO.getRankApp(handler); } }); } @@ -124,7 +129,7 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref switch (msg.what) { case 1: mAppInfoList = (List) msg.obj; - mAppAdapter.setData(checkUpdateOrInstalled(mAppInfoList)); + mAppAdapter.setData(mAppInfoList); mAppAdapter.notifyDataSetChanged(); break; } @@ -132,11 +137,4 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref } }; - public List checkUpdateOrInstalled(List list) { - for (AppInfo appInfo : list) { - appInfo.setInstall(ApkUtils.isAvailable(getContext(), appInfo.getApp_package())); - appInfo.setUpdate(ApkUtils.checkIsUpdate(getContext(), appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); - } - return list; - } } diff --git a/app/src/main/java/com/appstore/uiui/listener/LogDownloadListener.java b/app/src/main/java/com/appstore/uiui/listener/LogDownloadListener.java deleted file mode 100644 index b43a9c0..0000000 --- a/app/src/main/java/com/appstore/uiui/listener/LogDownloadListener.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2016 jeasonlzy(廖子尧) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.appstore.uiui.listener; - -import com.lzy.okgo.model.Progress; -import com.lzy.okserver.download.DownloadListener; - -import java.io.File; - -/** - * ================================================ - * 作 者:jeasonlzy(廖子尧)Github地址:https://github.com/jeasonlzy - * 版 本:1.0 - * 创建日期:2017/6/7 - * 描 述: - * 修订历史: - * ================================================ - */ -public class LogDownloadListener extends DownloadListener { - - public LogDownloadListener() { - super("LogDownloadListener"); - } - - @Override - public void onStart(Progress progress) { - System.out.println("onStart: " + progress); - } - - @Override - public void onProgress(Progress progress) { - System.out.println("onProgress: " + progress); - } - - @Override - public void onError(Progress progress) { - System.out.println("onError: " + progress); - progress.exception.printStackTrace(); - } - - @Override - public void onFinish(File file, Progress progress) { - System.out.println("onFinish: " + progress); - } - - @Override - public void onRemove(Progress progress) { - System.out.println("onRemove: " + progress); - } -} diff --git a/app/src/main/java/com/appstore/uiui/network/NetWorkManager.java b/app/src/main/java/com/appstore/uiui/network/NetWorkManager.java new file mode 100644 index 0000000..e746021 --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/network/NetWorkManager.java @@ -0,0 +1,103 @@ +package com.appstore.uiui.network; + +import android.os.Environment; + +import com.appstore.uiui.network.URLs.UrlAddress; +import com.appstore.uiui.network.api.BannerImage; +import com.appstore.uiui.network.api.DownloadApp; +import com.appstore.uiui.network.api.QueryAllApp; +import com.appstore.uiui.network.api.SNInfo; + +import java.io.File; +import java.util.concurrent.TimeUnit; + +import okhttp3.Cache; +import okhttp3.OkHttpClient; +import retrofit2.CallAdapter; +import retrofit2.Converter; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + +public class NetWorkManager { + + private static final String ROOT_URL = UrlAddress.ROOT_URL; + + private static final long cacheSize = 1024 * 1024 * 20;// 缓存文件最大限制大小20M + private static String cacheDirectory = Environment.getExternalStorageDirectory() + "/okttpcaches"; // 设置缓存文件路径 + private static Cache cache = new Cache(new File(cacheDirectory), cacheSize); // + private static final OkHttpClient client; + + static { + //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.connectTimeout(8, TimeUnit.SECONDS); // 设置连接超时时间 + builder.writeTimeout(8, TimeUnit.SECONDS);// 设置写入超时时间 + builder.readTimeout(8, TimeUnit.SECONDS);// 设置读取数据超时时间 + builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 + builder.cache(cache);// 设置缓存 + client = builder.build(); + } + + private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create(); + private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create(); + + private static SNInfo userInfoControl; + private static QueryAllApp queryAllAppControl; + private static BannerImage bannerImageControl; + private static DownloadApp downloadAppControl; + + + public static SNInfo getuserInfoControl() { + if (null == userInfoControl) { + Retrofit retrofit = new Retrofit.Builder() + .client(client) + .baseUrl(ROOT_URL) + .addConverterFactory(gsonConverterFactory) + .addCallAdapterFactory(rxJavaCallAdapterFactory) + .build(); + userInfoControl = retrofit.create(SNInfo.class); + } + return userInfoControl; + } + + public static QueryAllApp getQueryAllAppControl() { + if (null == queryAllAppControl) { + Retrofit retrofit = new Retrofit.Builder() + .client(client) + .baseUrl(ROOT_URL) + .addConverterFactory(gsonConverterFactory) + .addCallAdapterFactory(rxJavaCallAdapterFactory) + .build(); + queryAllAppControl = retrofit.create(QueryAllApp.class); + } + return queryAllAppControl; + } + + public static BannerImage getBannerImageControl() { + if (null == bannerImageControl) { + Retrofit retrofit = new Retrofit.Builder() + .client(client) + .baseUrl(ROOT_URL) + .addConverterFactory(gsonConverterFactory) + .addCallAdapterFactory(rxJavaCallAdapterFactory) + .build(); + bannerImageControl = retrofit.create(BannerImage.class); + } + return bannerImageControl; + } + + public static DownloadApp getDownloadAppControl() { + if (null == downloadAppControl) { + Retrofit retrofit = new Retrofit.Builder() + .client(client) + .baseUrl(ROOT_URL) + .addConverterFactory(gsonConverterFactory) + .addCallAdapterFactory(rxJavaCallAdapterFactory) + .build(); + downloadAppControl = retrofit.create(DownloadApp.class); + } + return downloadAppControl; + } + +} diff --git a/app/src/main/java/com/appstore/uiui/network/OKGO.java b/app/src/main/java/com/appstore/uiui/network/OKGO.java index 085fdc8..b546bfe 100644 --- a/app/src/main/java/com/appstore/uiui/network/OKGO.java +++ b/app/src/main/java/com/appstore/uiui/network/OKGO.java @@ -10,24 +10,23 @@ import androidx.annotation.NonNull; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.appstore.uiui.TextCode.MessageWhat; -import com.appstore.uiui.base.UserInfo; import com.appstore.uiui.bean.AppInfo; -import com.appstore.uiui.bean.BaseResponse; import com.appstore.uiui.bean.bannerImage; -import com.appstore.uiui.network.URLs.Url; +import com.appstore.uiui.network.URLs.UrlAddress; +import com.appstore.uiui.network.api.SNInfo; import com.appstore.uiui.utils.LogUtils; import com.appstore.uiui.utils.SPUtils; import com.appstore.uiui.utils.ToastUtil; import com.appstore.uiui.utils.Utils; -import com.lzy.okgo.OkGo; -import com.lzy.okgo.callback.StringCallback; -import com.lzy.okgo.model.Response; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import okhttp3.internal.Util; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; public class OKGO { @@ -35,480 +34,480 @@ public class OKGO { private static final int GET_USERINFO = 1; private static final int GET_SORTAPP = 2; - private Handler mhandler = new Handler() { - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case GET_ALL_APPINFO: - break; - case GET_USERINFO: +// private Handler mhandler = new Handler() { +// @Override +// public void handleMessage(@NonNull Message msg) { +// super.handleMessage(msg); +// switch (msg.what) { +// case GET_ALL_APPINFO: +// break; +// case GET_USERINFO: +// +// break; +// case GET_SORTAPP: +// +// break; +// } +// } +// }; - break; - case GET_SORTAPP: - - break; - } - } - }; - - synchronized public static void getAllAppInfo(final Handler handler) { - OkGo.post(Url.GET_ALL_APPINFO) - .params("sn", Utils.getSerial()) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - try { - JSONObject body = JSON.parseObject(response.body()); -// LogUtils.e("onSuccess", body.toString()); - LogUtils.e("fht", "getAllAppInfo onSuccess"); - int code = body.getInteger("code"); - String msg = body.getString("msg"); - String data = body.getString("data"); - List applist = JSON.parseArray(data, AppInfo.class); - if (code == MessageWhat.CODE_SUCCESSFUL) { - Message message = new Message(); - message.what = 1; - message.obj = applist; - handler.sendMessage(message); - } else { - ToastUtil.show(msg); - handler.sendEmptyMessage(0); - } - } catch (Exception e) { - LogUtils.e("Exception", e.getMessage()); - ToastUtil.show("服务器错误,请稍后重试"); - handler.sendEmptyMessage(0); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getAllAppInfo", response.getException().toString()); - ToastUtil.show("网络连接失败,检查网络连接"); - handler.sendEmptyMessage(0); - } - }); - } - public static synchronized void checkDevicesInfo(final Context context) { - OkGo.post(Url.GET_INFO_FROMESN) - .params("sn", Utils.getSerial()) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - Log.e("onSuccess", "checkDevicesInfo"); - try { - JSONObject bodyObject = JSON.parseObject(response.body()); - Integer code = (bodyObject.getInteger("code")); - String msg = bodyObject.getString("msg"); - String data = bodyObject.getString("data"); - UserInfo userInfo = JSON.parseObject(data, UserInfo.class); - if (code == 200) { - SPUtils.put(context, "isLogined", 1); - SPUtils.put(context, "member_id", userInfo.getMember_id()); - SPUtils.put(context, "sn_id", userInfo.getId()); - } else if (code == -200) { - SPUtils.put(context, "isLogined", 0); - - } else if (code == -250) { - SPUtils.put(context, "isLogined", 2); - //设备验证 - } - } catch (Exception ex) { - Log.e("checkDevicesInfo", ex.getMessage()); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - Log.e("onError", response.getException().toString()); - - } - }); - } - - synchronized public static void getAllAppPackageName(final Handler handler) { - OkGo.post(Url.GET_ALL_PACKAGENAME) - .params("sn", Utils.getSerial()) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - String s = response.body(); - try { - JSONObject body = JSON.parseObject(s); - int code = body.getInteger("code"); - String msg = body.getString("msg"); - String data = body.getString("data"); - if (code == 200) { - List jsonArray = JSON.parseArray(data, JSONObject.class); - String packageList = ""; - for (JSONObject jsonObject : jsonArray) { - packageList += jsonObject.getString("app_package") + ","; - } - if (!packageList.isEmpty()) { - Log.e("fht", packageList); - Message message = new Message(); - message.what = 201; - message.obj = packageList; - handler.sendMessage(message); - } else { - handler.sendEmptyMessage(202); - } - } - } catch (Exception e) { - - } - } - - @Override - public void onError(Response response) { - super.onError(response); - } - }); - } - - synchronized public static void getRankApp(final Handler handler) { - OkGo.get(Url.GET_ALL_RANK).execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - try { - JSONObject body = JSON.parseObject(response.body()); -// LogUtils.e("onSuccess", body.toString()); - LogUtils.e("fht", "getAllAppInfo onSuccess"); - int code = body.getInteger("code"); - String msg = body.getString("msg"); - String data = body.getString("data"); - List applist = JSON.parseArray(data, AppInfo.class); - if (code == MessageWhat.CODE_SUCCESSFUL) { - Message message = new Message(); - message.what = 1; - message.obj = applist; - handler.sendMessage(message); - } else { - ToastUtil.show(msg); - handler.sendEmptyMessage(0); - } - } catch (Exception e) { - LogUtils.e("Exception", e.getMessage()); - ToastUtil.show("服务器错误,请稍后重试"); - handler.sendEmptyMessage(0); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getRankApp", response.getException().toString()); - ToastUtil.show("网络连接失败,检查网络连接"); - handler.sendEmptyMessage(0); - } - }); - } - - synchronized public static void searchAppbyName(final Handler handler, String app_name) { - OkGo.post(Url.GET_APPSEARCHE) - .params("sn", Utils.getSerial()) - .params("app_name", app_name) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - try { - JSONObject body = JSON.parseObject(response.body()); - LogUtils.e("onSuccess", body.toString()); - LogUtils.e("fht", "searchAppbyName onSuccess"); - int code = body.getInteger("code"); - String msg = body.getString("msg"); - String data = body.getString("data"); - List applist = JSON.parseArray(data, AppInfo.class); - if (code == MessageWhat.CODE_SUCCESSFUL) { - Message message = new Message(); - message.what = 1; - message.obj = applist; - handler.sendMessage(message); - } else { - ToastUtil.show(msg); - handler.sendEmptyMessage(0); - } - } catch (Exception e) { - LogUtils.e("Exception", e.getMessage()); - ToastUtil.show("服务器错误,请稍后重试"); - handler.sendEmptyMessage(0); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("searchAppbyName", response.getException().toString()); - ToastUtil.show("网络连接失败,检查网络连接"); - handler.sendEmptyMessage(0); - - } - }); - } - - - synchronized public static void getUserInfo(final Handler handler) { - String sn = Utils.getSerial(); - OkGo.post(Url.GET_INFO_FROMESN) - .params("sn", sn) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - LogUtils.e("fht", "getUserInfo onSuccess"); - JSONObject jsonObject = JSON.parseObject(response.body()); - int code = jsonObject.getInteger("code"); - String msg = jsonObject.getString("msg"); - if (code == MessageWhat.CODE_SUCCESSFUL) { - String data = jsonObject.getString("data"); - UserInfo userInfo = JSON.parseObject(data, UserInfo.class); - Message message = new Message(); - message.what = 1; - message.obj = userInfo; - handler.sendMessage(message); - } else { - ToastUtil.show(msg); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getUserInfo", response.getException().toString()); - ToastUtil.show("网络连接失败,检查网络连接"); - } - }); - } - - synchronized public static void getUserInfo(final Context context) { - OkGo.post(Url.GET_INFO_FROMESN) - .params("sn", Utils.getSerial()) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - LogUtils.e("fht", "getUserInfo onSuccess"); - JSONObject jsonObject = JSON.parseObject(response.body()); - int code = jsonObject.getInteger("code"); - String msg = jsonObject.getString("msg"); - if (code == MessageWhat.CODE_SUCCESSFUL) { - String data = jsonObject.getString("data"); - UserInfo userInfo = JSON.parseObject(data, UserInfo.class); - SPUtils.put(context, "member_id", userInfo.getMember_id()); - SPUtils.put(context, "sn_id", userInfo.getId()); - SPUtils.put(context, "sn_grade", userInfo.getSn_grade()); - } else { - ToastUtil.show(msg); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getUserInfo", response.getException().toString()); - ToastUtil.show("网络连接失败,检查网络连接"); - } - }); - } - - synchronized public static void getSortApp(final Handler handler, int type, int grade, int subject) { - OkGo.post(Url.GET_SORT_APP) - .params("sn", Utils.getSerial()) - .params("app_type", type)//应用分类 0学习 1娱乐 - .params("grade", grade)//年级 以数字代表 - .params("subject", subject) //科目 以数字代表 - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - LogUtils.e("fht", "getSortApp onSuccess"); - JSONObject jsonObject = JSON.parseObject(response.body()); - LogUtils.e("fht", jsonObject.toString()); - int code = jsonObject.getInteger("code"); - String msg = jsonObject.getString("msg"); - if (code == MessageWhat.CODE_SUCCESSFUL) { - String data = jsonObject.getString("data"); - List list = JSON.parseArray(data, AppInfo.class); - Message message = new Message(); - message.what = 1; - message.obj = list; - handler.sendMessage(message); - } else { - ToastUtil.show(msg); - handler.sendEmptyMessage(0); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getSortApp", response.getException().toString()); - ToastUtil.show("网络连接失败,检查网络连接"); - handler.sendEmptyMessage(0); - } - }); - } - - synchronized public static void setAppinstallInfo(int member_id, String sn_id, String app_name, String packageName) { - OkGo.post(Url.SET_APP_INSTALL_INFO) - .params("member_id", member_id) - .params("sn_id", sn_id) - .params("app_name", app_name) - .params("package", packageName) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - JSONObject object = JSON.parseObject(response.body()); - int code = object.getInteger("code"); - String msg = object.getString("msg"); - LogUtils.e("setAppinstallInfo", msg); - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("setAppinstallInfo", "onError:" + response.getException()); - - } - }); - - } - - synchronized public static void setAppuninstallInfo(String sn_id, String packageName) { - OkGo.post(Url.SET_APP_UNINSTALL_INFO) - .params("sn_id", sn_id) - .params("package", packageName) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - JSONObject object = JSON.parseObject(response.body()); - int code = object.getInteger("code"); - String msg = object.getString("msg"); - LogUtils.e("setAppinstallInfo", msg); - if (code == MessageWhat.CODE_SUCCESSFUL) { - - } else { - - } - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("setAppinstallInfo", "onError:" + response.getException()); - - } - }); - - } - - synchronized public static void checkUpdateByPackage(final Handler handler, final String packageName, String versionCode) { - OkGo.post(Url.GET_APP_UPDATE) - .params("code", versionCode) - .params("package", packageName) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - try { - JSONObject body = JSON.parseObject(response.body()); - int code = body.getInteger("code"); - String msg = body.getString("msg"); - if (code == 200) { - Message message = new Message(); - JSONObject data = JSON.parseObject(body.getString("data")); - if (data != null) { - String url = data.getString("downloadurl"); - message.what = 200; - message.obj = url; - } else { - message.what = -200; - } - handler.sendMessage(message); - } else { - Log.e("checkUpdateByPackage", packageName + msg); - } - } catch (Exception e) { - Log.e("checkUpdateByPackage", e.getMessage()); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - Log.e("checkUpdateByPackage", response.getException().toString()); - } - }); - } - - public static void getBannerImg(final Handler handler) { - OkGo.get(Url.GET_BANNER_IMG).execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - try { - JSONObject body = JSON.parseObject(response.body()); - int code = body.getInteger("code"); - String msg = body.getString("msg"); - if (code == 200) { - Message message = new Message(); - List data = JSON.parseArray(body.getString("data"), bannerImage.class); - if (data != null) { - List urlList = new ArrayList<>(); - for (int i = 0; i < data.size(); i++) { - urlList.add(data.get(0).getImg()); - } - message.what = 200; - message.obj = urlList; - } else { - message.what = -200; - } - handler.sendMessage(message); - } else { - Log.e("checkUpdateByPackage", msg); - } - } catch (Exception e) { - Log.e("checkUpdateByPackage", e.getMessage()); - } - } - - @Override - public void onError(Response response) { - super.onError(response); - } - }); - - } - - public static void getSubClassfy(final Handler handler) { - OkGo.post(Url.GET_SUBClASSFY) - .params("sn", Utils.getSerial()) - .execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - JSONObject jsonObject = JSONObject.parseObject(response.body()); - int code = jsonObject.getInteger("code"); - String msg = jsonObject.getString("msg"); - if (code == 200) { - String data = jsonObject.getString("data"); - if (!data.equals("")) { - List list = Arrays.asList(data.split(",")); - Message message = new Message(); - message.what = 200; - message.obj = list; - handler.sendMessage(message); - } - } else { - ToastUtil.debugShow(msg); - handler.sendEmptyMessage(-200); - } - - } - - @Override - public void onError(Response response) { - super.onError(response); - } - }); - } +// synchronized public static void getAllAppInfo(final Handler handler) { +// OkGo.post(UrlAddress.GET_ALL_APPINFO) +// .params("sn", Utils.getSerial()) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// try { +// JSONObject body = JSON.parseObject(response.body()); +//// LogUtils.e("onSuccess", body.toString()); +// LogUtils.e("fht", "getAllAppInfo onSuccess"); +// int code = body.getInteger("code"); +// String msg = body.getString("msg"); +// String data = body.getString("data"); +// List applist = JSON.parseArray(data, AppInfo.class); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// Message message = new Message(); +// message.what = 1; +// message.obj = applist; +// handler.sendMessage(message); +// } else { +// ToastUtil.show(msg); +// handler.sendEmptyMessage(0); +// } +// } catch (Exception e) { +// LogUtils.e("Exception", e.getMessage()); +// ToastUtil.show("服务器错误,请稍后重试"); +// handler.sendEmptyMessage(0); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getAllAppInfo", response.getException().toString()); +// ToastUtil.show("网络连接失败,检查网络连接"); +// handler.sendEmptyMessage(0); +// } +// }); +// } +// +// public static synchronized void checkDevicesInfo(final Context context) { +// OkGo.get(UrlAddress.GET_INFO_FROMESN) +// .params("sn", Utils.getSerial()) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// Log.e("onSuccess", "checkDevicesInfo"); +// try { +// JSONObject bodyObject = JSON.parseObject(response.body()); +// Integer code = (bodyObject.getInteger("code")); +// String msg = bodyObject.getString("msg"); +// String data = bodyObject.getString("data"); +// SNInfo userInfo = JSON.parseObject(data, SNInfo.class); +// if (code == 200) { +// SPUtils.put(context, "isLogined", 1); +// SPUtils.put(context, "member_id", userInfo.getMember_id()); +// SPUtils.put(context, "sn_id", userInfo.getId()); +// } else if (code == -200) { +// SPUtils.put(context, "isLogined", 0); +// +// } else if (code == -250) { +// SPUtils.put(context, "isLogined", 2); +// //设备验证 +// } +// } catch (Exception ex) { +// Log.e("checkDevicesInfo", ex.getMessage()); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// Log.e("onError", response.getException().toString()); +// +// } +// }); +// } +// +// synchronized public static void getAllAppPackageName(final Handler handler) { +// OkGo.post(UrlAddress.GET_ALL_PACKAGENAME) +// .params("sn", Utils.getSerial()) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// String s = response.body(); +// try { +// JSONObject body = JSON.parseObject(s); +// int code = body.getInteger("code"); +// String msg = body.getString("msg"); +// String data = body.getString("data"); +// if (code == 200) { +// List jsonArray = JSON.parseArray(data, JSONObject.class); +// String packageList = ""; +// for (JSONObject jsonObject : jsonArray) { +// packageList += jsonObject.getString("app_package") + ","; +// } +// if (!packageList.isEmpty()) { +// Log.e("fht", packageList); +// Message message = new Message(); +// message.what = 201; +// message.obj = packageList; +// handler.sendMessage(message); +// } else { +// handler.sendEmptyMessage(202); +// } +// } +// } catch (Exception e) { +// +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// } +// }); +// } +// +// synchronized public static void getRankApp(final Handler handler) { +// OkGo.get(UrlAddress.GET_ALL_RANK).execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// try { +// JSONObject body = JSON.parseObject(response.body()); +//// LogUtils.e("onSuccess", body.toString()); +// LogUtils.e("fht", "getAllAppInfo onSuccess"); +// int code = body.getInteger("code"); +// String msg = body.getString("msg"); +// String data = body.getString("data"); +// List applist = JSON.parseArray(data, AppInfo.class); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// Message message = new Message(); +// message.what = 1; +// message.obj = applist; +// handler.sendMessage(message); +// } else { +// ToastUtil.show(msg); +// handler.sendEmptyMessage(0); +// } +// } catch (Exception e) { +// LogUtils.e("Exception", e.getMessage()); +// ToastUtil.show("服务器错误,请稍后重试"); +// handler.sendEmptyMessage(0); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getRankApp", response.getException().toString()); +// ToastUtil.show("网络连接失败,检查网络连接"); +// handler.sendEmptyMessage(0); +// } +// }); +// } +// +// synchronized public static void searchAppbyName(final Handler handler, String app_name) { +// OkGo.post(UrlAddress.GET_APPSEARCHE) +// .params("sn", Utils.getSerial()) +// .params("app_name", app_name) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// try { +// JSONObject body = JSON.parseObject(response.body()); +// LogUtils.e("onSuccess", body.toString()); +// LogUtils.e("fht", "searchAppbyName onSuccess"); +// int code = body.getInteger("code"); +// String msg = body.getString("msg"); +// String data = body.getString("data"); +// List applist = JSON.parseArray(data, AppInfo.class); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// Message message = new Message(); +// message.what = 1; +// message.obj = applist; +// handler.sendMessage(message); +// } else { +// ToastUtil.show(msg); +// handler.sendEmptyMessage(0); +// } +// } catch (Exception e) { +// LogUtils.e("Exception", e.getMessage()); +// ToastUtil.show("服务器错误,请稍后重试"); +// handler.sendEmptyMessage(0); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("searchAppbyName", response.getException().toString()); +// ToastUtil.show("网络连接失败,检查网络连接"); +// handler.sendEmptyMessage(0); +// +// } +// }); +// } +// +// synchronized public static void getUserInfo(final Handler handler) { +// String sn = Utils.getSerial(); +// OkGo.get(UrlAddress.GET_INFO_FROMESN) +// .params("sn", sn) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// LogUtils.e("fht", "getUserInfo onSuccess"); +// JSONObject jsonObject = JSON.parseObject(response.body()); +// int code = jsonObject.getInteger("code"); +// String msg = jsonObject.getString("msg"); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// String data = jsonObject.getString("data"); +// SNInfo userInfo = JSON.parseObject(data, SNInfo.class); +// Message message = new Message(); +// message.what = 1; +// message.obj = userInfo; +// handler.sendMessage(message); +// } else { +// ToastUtil.show(msg); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getUserInfo", response.getException().toString()); +// ToastUtil.show("网络连接失败,检查网络连接"); +// } +// }); +// } +// +// synchronized public static void getUserInfo(final Context context) { +// OkGo.get(UrlAddress.GET_INFO_FROMESN) +// .params("sn", Utils.getSerial()) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// LogUtils.e("fht", "getUserInfo onSuccess"); +// JSONObject jsonObject = JSON.parseObject(response.body()); +// int code = jsonObject.getInteger("code"); +// String msg = jsonObject.getString("msg"); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// String data = jsonObject.getString("data"); +// SNInfo userInfo = JSON.parseObject(data, SNInfo.class); +// SPUtils.put(context, "member_id", userInfo.getMember_id()); +// SPUtils.put(context, "sn_id", userInfo.getId()); +// SPUtils.put(context, "sn_grade", userInfo.getSn_grade()); +// } else { +// ToastUtil.show(msg); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getUserInfo", response.getException().toString()); +// ToastUtil.show("网络连接失败,检查网络连接"); +// } +// }); +// } +// +// synchronized public static void getSortApp(final Handler handler, int type, int grade, int subject) { +// OkGo.post(UrlAddress.GET_SORT_APP) +// .params("sn", Utils.getSerial()) +// .params("app_type", type)//应用分类 0学习 1娱乐 +// .params("grade", grade)//年级 以数字代表 +// .params("subject", subject) //科目 以数字代表 +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// LogUtils.e("fht", "getSortApp onSuccess"); +// JSONObject jsonObject = JSON.parseObject(response.body()); +// LogUtils.e("fht", jsonObject.toString()); +// int code = jsonObject.getInteger("code"); +// String msg = jsonObject.getString("msg"); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// String data = jsonObject.getString("data"); +// List list = JSON.parseArray(data, AppInfo.class); +// Message message = new Message(); +// message.what = 1; +// message.obj = list; +// handler.sendMessage(message); +// } else { +// ToastUtil.show(msg); +// handler.sendEmptyMessage(0); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getSortApp", response.getException().toString()); +// ToastUtil.show("网络连接失败,检查网络连接"); +// handler.sendEmptyMessage(0); +// } +// }); +// } +// +// synchronized public static void setAppinstallInfo(int member_id, String sn_id, String app_name, String packageName) { +// OkGo.post(UrlAddress.SET_APP_INSTALL_INFO) +// .params("member_id", member_id) +// .params("sn_id", sn_id) +// .params("app_name", app_name) +// .params("package", packageName) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// JSONObject object = JSON.parseObject(response.body()); +// int code = object.getInteger("code"); +// String msg = object.getString("msg"); +// LogUtils.e("setAppinstallInfo", msg); +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("setAppinstallInfo", "onError:" + response.getException()); +// +// } +// }); +// +// } +// +// synchronized public static void setAppuninstallInfo(String sn_id, String packageName) { +// OkGo.post(UrlAddress.SET_APP_UNINSTALL_INFO) +// .params("sn_id", sn_id) +// .params("package", packageName) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// JSONObject object = JSON.parseObject(response.body()); +// int code = object.getInteger("code"); +// String msg = object.getString("msg"); +// LogUtils.e("setAppinstallInfo", msg); +// if (code == MessageWhat.CODE_SUCCESSFUL) { +// +// } else { +// +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("setAppinstallInfo", "onError:" + response.getException()); +// +// } +// }); +// +// } +// +// synchronized public static void checkUpdateByPackage(final Handler handler, final String packageName, String versionCode) { +// OkGo.post(UrlAddress.GET_APP_UPDATE) +// .params("code", versionCode) +// .params("package", packageName) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// try { +// JSONObject body = JSON.parseObject(response.body()); +// int code = body.getInteger("code"); +// String msg = body.getString("msg"); +// if (code == 200) { +// Message message = new Message(); +// JSONObject data = JSON.parseObject(body.getString("data")); +// if (data != null) { +// String url = data.getString("downloadurl"); +// message.what = 200; +// message.obj = url; +// } else { +// message.what = -200; +// } +// handler.sendMessage(message); +// } else { +// Log.e("checkUpdateByPackage", packageName + msg); +// } +// } catch (Exception e) { +// Log.e("checkUpdateByPackage", e.getMessage()); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// Log.e("checkUpdateByPackage", response.getException().toString()); +// } +// }); +// } +// +// public static void getBannerImg(final Handler handler) { +// OkGo.get(UrlAddress.GET_BANNER_IMG).execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// try { +// JSONObject body = JSON.parseObject(response.body()); +// int code = body.getInteger("code"); +// String msg = body.getString("msg"); +// if (code == 200) { +// Message message = new Message(); +// List data = JSON.parseArray(body.getString("data"), bannerImage.class); +// if (data != null) { +// List urlList = new ArrayList<>(); +// for (int i = 0; i < data.size(); i++) { +// urlList.add(data.get(0).getImg()); +// } +// message.what = 200; +// message.obj = urlList; +// } else { +// message.what = -200; +// } +// handler.sendMessage(message); +// } else { +// Log.e("checkUpdateByPackage", msg); +// } +// } catch (Exception e) { +// Log.e("checkUpdateByPackage", e.getMessage()); +// } +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// } +// }); +// +// } +// +// public static void getSubClassfy(final Handler handler) { +// OkGo.post(UrlAddress.GET_SUBClASSFY) +// .params("sn", Utils.getSerial()) +// .execute(new StringCallback() { +// @Override +// public void onSuccess(Response response) { +// JSONObject jsonObject = JSONObject.parseObject(response.body()); +// int code = jsonObject.getInteger("code"); +// String msg = jsonObject.getString("msg"); +// if (code == 200) { +// String data = jsonObject.getString("data"); +// if (!data.equals("")) { +// List list = Arrays.asList(data.split(",")); +// Message message = new Message(); +// message.what = 200; +// message.obj = list; +// handler.sendMessage(message); +// } +// } else { +// ToastUtil.debugShow(msg); +// handler.sendEmptyMessage(-200); +// } +// +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// } +// }); +// } } diff --git a/app/src/main/java/com/appstore/uiui/network/URLs/Url.java b/app/src/main/java/com/appstore/uiui/network/URLs/Url.java deleted file mode 100644 index 1584c85..0000000 --- a/app/src/main/java/com/appstore/uiui/network/URLs/Url.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.appstore.uiui.network.URLs; - -public class Url { - public final static String NETWORK_HOME_ADDRESS = "http://homework.tuiinfo.com/api/"; - - public final static String GET_ALL_APPINFO = NETWORK_HOME_ADDRESS + "App/allInfo"; - //获取所有应用 - public final static String GET_ALL_RANK = NETWORK_HOME_ADDRESS + "App/rankings"; - //获取所有应用排行 - public final static String GET_APPSEARCHE = NETWORK_HOME_ADDRESS + "App/appSearch"; - //搜索应用 - public final static String GET_INFO_FROMESN = NETWORK_HOME_ADDRESS + "Member/snInfo"; - //通过SN获取绑定信息 - public final static String GET_SORT_APP = NETWORK_HOME_ADDRESS + "App/sortApp"; - //app分类查询 - public final static String SET_APP_INSTALL_INFO = NETWORK_HOME_ADDRESS + "App/appInstall"; - //发送app安装信息 - public final static String SET_APP_UNINSTALL_INFO = NETWORK_HOME_ADDRESS + "App/appUnload"; - //发送app卸载信息 - public final static String GET_APP_UPDATE = NETWORK_HOME_ADDRESS + "Update/update"; - //根据包名获取更新 - public final static String GET_BANNER_IMG = NETWORK_HOME_ADDRESS + "Slideshow/getImg"; - //获取banner图 - public final static String GET_ALL_PACKAGENAME = NETWORK_HOME_ADDRESS + "App/allPackageSn"; - //获取所有应用包名 - public final static String GET_SUBClASSFY = NETWORK_HOME_ADDRESS + "Application/getSubClassfy"; - //获取应用分类 - -} diff --git a/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java b/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java new file mode 100644 index 0000000..d613e92 --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java @@ -0,0 +1,30 @@ +package com.appstore.uiui.network.URLs; + +public class UrlAddress { + public final static String ROOT_URL = "http://homework.uiuios.com/android/"; + + public final static String GET_ALL_APPINFO = ROOT_URL + "app/queryAllApp"; + //获取所有应用 + public final static String GET_ALL_RANK = ROOT_URL + "App/rankings"; + //获取所有应用排行 + public final static String GET_APPSEARCHE = ROOT_URL + "App/appSearch"; + //搜索应用 + public final static String GET_INFO_FROMESN = ROOT_URL + "sn/getSnInfo"; + //通过SN获取绑定信息 + public final static String GET_SORT_APP = ROOT_URL + "App/sortApp"; + //app分类查询 + public final static String SET_APP_INSTALL_INFO = ROOT_URL + "App/appInstall"; + //发送app安装信息 + public final static String SET_APP_UNINSTALL_INFO = ROOT_URL + "App/appUnload"; + //发送app卸载信息 + public final static String GET_APP_UPDATE = ROOT_URL + "Update/update"; + //根据包名获取更新 + public final static String GET_BANNER_IMG = ROOT_URL + "app/getBrand"; + //获取banner图 + public final static String GET_ALL_PACKAGENAME = ROOT_URL + "App/allPackageSn"; + //获取所有应用包名 + public final static String GET_SUBClASSFY = ROOT_URL + "Application/getSubClassfy"; + //获取应用分类 + public final static String SEND_DOWNLOADAPP = ROOT_URL + "app/downloadApp"; + +} diff --git a/app/src/main/java/com/appstore/uiui/network/api/BannerImage.java b/app/src/main/java/com/appstore/uiui/network/api/BannerImage.java new file mode 100644 index 0000000..64370e0 --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/network/api/BannerImage.java @@ -0,0 +1,19 @@ +package com.appstore.uiui.network.api; + +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.bean.ImageUrl; +import com.appstore.uiui.network.URLs.UrlAddress; + +import java.util.List; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface BannerImage { + @GET(UrlAddress.GET_BANNER_IMG) + Observable>> getImageURL( + @Query("sn") String sn + ); + +} diff --git a/app/src/main/java/com/appstore/uiui/network/api/DownloadApp.java b/app/src/main/java/com/appstore/uiui/network/api/DownloadApp.java new file mode 100644 index 0000000..7cb9cfd --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/network/api/DownloadApp.java @@ -0,0 +1,20 @@ +package com.appstore.uiui.network.api; + +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.network.URLs.UrlAddress; + +import io.reactivex.Observable; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + +public interface DownloadApp { + @FormUrlEncoded + @POST(UrlAddress.SEND_DOWNLOADAPP) + ObservablesendDownloadApp( + @Field("package_name")String package_name, + @Field("app_size")long app_size, + @Field("sn")String sn, + @Field("userId")int userId + ); +} diff --git a/app/src/main/java/com/appstore/uiui/network/api/QueryAllApp.java b/app/src/main/java/com/appstore/uiui/network/api/QueryAllApp.java new file mode 100644 index 0000000..240f8af --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/network/api/QueryAllApp.java @@ -0,0 +1,19 @@ +package com.appstore.uiui.network.api; + +import com.appstore.uiui.bean.AppInfo; +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.bean.UserInfo; +import com.appstore.uiui.network.URLs.UrlAddress; + +import java.util.List; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface QueryAllApp { + @GET(UrlAddress.GET_ALL_APPINFO) + Observable>> getAllApp( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/appstore/uiui/network/api/SNInfo.java b/app/src/main/java/com/appstore/uiui/network/api/SNInfo.java new file mode 100644 index 0000000..7f0bda6 --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/network/api/SNInfo.java @@ -0,0 +1,16 @@ +package com.appstore.uiui.network.api; + +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.bean.UserInfo; +import com.appstore.uiui.network.URLs.UrlAddress; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface SNInfo { + @GET(UrlAddress.GET_INFO_FROMESN) + Observable> getUserinfo( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java b/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java index 42833f8..b8f4136 100644 --- a/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java +++ b/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java @@ -20,8 +20,8 @@ public class AppManagerReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - int member_id = (int) SPUtils.get(context, "member_id", -1); - String sn_id = (String) SPUtils.get(context, "sn_id", "-1"); + int admin_id = (int) SPUtils.get(context, "admin_id", -1); + int sn_id = (int) SPUtils.get(context, "sn_id", -1); Log.e("BootReceiver", intent.getAction()); action = intent.getAction(); @@ -41,11 +41,11 @@ public class AppManagerReceiver extends BroadcastReceiver { ToastUtil.show(name + ":安装成功"); LogUtils.e(TAG, "安装了:" + packageName + "包名的程序"); // ToastTool.show("安装成功"); - if (!packageName.equals(context.getPackageName()) && !Arrays.asList(packages).contains(packageName)) { - if (member_id == -1 || sn_id.equals("-1")) { - OKGO.getUserInfo(context); + if (!packageName.equals(context.getPackageName()) && !Arrays.asList(packages).contains(packageName)) { + if (admin_id == -1 || sn_id == -1) { +// OKGO.getUserInfo(context); } else { - OKGO.setAppinstallInfo(member_id, sn_id, name, packageName); +// OKGO.setAppinstallInfo(member_id, sn_id, name, packageName); } } } @@ -56,11 +56,11 @@ public class AppManagerReceiver extends BroadcastReceiver { LogUtils.e(TAG, "卸载了:" + packageName + "包名的程序"); Intent intents = new Intent("com.appstore.uiui.PACKAGE_REMOVED"); context.sendBroadcast(intents); - if (!packageName.equals(context.getPackageName())&& !Arrays.asList(packages).contains(packageName)) { - if (member_id == -1 || sn_id.equals("-1")) { - OKGO.getUserInfo(context); + if (!packageName.equals(context.getPackageName()) && !Arrays.asList(packages).contains(packageName)) { + if (admin_id == -1 || sn_id == -1) { +// OKGO.getUserInfo(context); } else { - OKGO.setAppuninstallInfo(sn_id, packageName); +// OKGO.setAppuninstallInfo(sn_id, packageName); } } } @@ -70,6 +70,7 @@ public class AppManagerReceiver extends BroadcastReceiver { } + String[] packages = { "com.appstore.uiui", "com.uiuios.updatetools", diff --git a/app/src/main/java/com/appstore/uiui/receiver/BootReceiver.java b/app/src/main/java/com/appstore/uiui/receiver/BootReceiver.java index d7b136f..b31dfcc 100644 --- a/app/src/main/java/com/appstore/uiui/receiver/BootReceiver.java +++ b/app/src/main/java/com/appstore/uiui/receiver/BootReceiver.java @@ -17,7 +17,7 @@ public class BootReceiver extends BroadcastReceiver { context.startService(new Intent(context, InitJpushServer.class)); context.startService(new Intent(context, StepService.class)); context.startService(new Intent(context, GuardService.class)); - OKGO.getUserInfo(context); +// OKGO.getUserInfo(context); LogUtils.e("fht", "booting BootReceiver"); } } diff --git a/app/src/main/java/com/appstore/uiui/service/GuardService.java b/app/src/main/java/com/appstore/uiui/service/GuardService.java index fabd765..d12ab90 100644 --- a/app/src/main/java/com/appstore/uiui/service/GuardService.java +++ b/app/src/main/java/com/appstore/uiui/service/GuardService.java @@ -23,22 +23,28 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.appstore.uiui.KeepAliveConnection; -import com.appstore.uiui.network.OKGO; +import com.appstore.uiui.bean.BaseResponse; +import com.appstore.uiui.network.NetWorkManager; +import com.appstore.uiui.network.api.DownloadApp; import com.appstore.uiui.utils.ApkUtils; import com.appstore.uiui.utils.LogUtils; +import com.appstore.uiui.utils.SPUtils; import com.appstore.uiui.utils.ServiceAliveUtils; +import com.appstore.uiui.utils.Utils; import com.arialyy.annotations.Download; import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.task.DownloadTask; -import com.blankj.utilcode.util.ToastUtils; -import com.lzy.okgo.OkGo; -import com.lzy.okgo.callback.FileCallback; -import com.lzy.okgo.model.Progress; -import com.lzy.okgo.model.Response; import java.io.File; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; + /** * 守护进程 双进程通讯 @@ -83,7 +89,7 @@ public class GuardService extends Service { Aria.init(this); Aria.get(this).getDownloadConfig().setMaxTaskNum(1); Aria.download(this).register(); - OKGO.getAllAppPackageName(handler); +// OKGO.getAllAppPackageName(handler); CheckUpdateBySNinfo(); // startForeground(1, new Notification()); // 绑定建立链接 @@ -101,9 +107,9 @@ public class GuardService extends Service { e.printStackTrace(); } if (null != packageInfo) { - OKGO.checkUpdateByPackage(handler, packageInfo.packageName, String.valueOf(packageInfo.versionCode)); +// OKGO.checkUpdateByPackage(handler, packageInfo.packageName, String.valueOf(packageInfo.versionCode)); } else { - OKGO.checkUpdateByPackage(handler, "com.info.sn", "0"); +// OKGO.checkUpdateByPackage(handler, "com.info.sn", "0"); } } @@ -114,12 +120,12 @@ public class GuardService extends Service { switch (msg.what) { case 200: String url = (String) msg.obj; - getFile(url); +// getFile(url); break; case 201: String apppackage = (String) msg.obj; Log.e("fht", Settings.System.getString(getContentResolver(), "qch_app_forbid") + "?"); - if (Settings.System.putString(getContentResolver(), "qch_app_forbid", apppackage+ "com.info.sn,com.android.uiuios,com.appstore.uiui,com.uiuios.updatetools")) { + if (Settings.System.putString(getContentResolver(), "qch_app_forbid", apppackage + "com.info.sn,com.android.uiuios,com.appstore.uiui,com.uiuios.updatetools")) { Log.e("fht", "app package write successful"); } break; @@ -129,59 +135,86 @@ public class GuardService extends Service { } }; - private void getFile(String url) { - OkGo.get(url) - .execute(new FileCallback() { - @Override - public void onSuccess(final Response response) { -// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video"); - new Thread(new Runnable() { - @Override - public void run() { - ApkUtils.installApp(GuardService.this, response.body().getAbsolutePath()); - } - }).start(); - LogUtils.e("getFile", "download file successful,now installing"); - } - - @Override - public void onError(Response response) { - super.onError(response); - LogUtils.e("getFile", "File download Failure"); - } - - @Override - public void downloadProgress(Progress progress) { - super.downloadProgress(progress); - LogUtils.e("getFile", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed); - } - }); - } +// private void getFile(String url) { +// OkGo.get(url) +// .execute(new FileCallback() { +// @Override +// public void onSuccess(final Response response) { +//// Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_forbid", "com.baidu.video"); +// new Thread(new Runnable() { +// @Override +// public void run() { +// ApkUtils.installApp(GuardService.this, response.body().getAbsolutePath()); +// } +// }).start(); +// LogUtils.e("getFile", "download file successful,now installing"); +// } +// +// @Override +// public void onError(Response response) { +// super.onError(response); +// LogUtils.e("getFile", "File download Failure"); +// } +// +// @Override +// public void downloadProgress(Progress progress) { +// super.downloadProgress(progress); +// LogUtils.e("getFile", "已下载:" + progress.currentSize + ",总大小:" + progress.totalSize + ",进度:" + progress.fraction + ",当前网速:" + progress.speed); +// } +// }); +// } //在这里处理任务执行中的状态,如进度进度条的刷新 @Download.onTaskRunning protected void running(DownloadTask task) { LogUtils.e("mjsheng", "我在下载=--------------::" + task.getState() + "-------" + task.getPercent() + "-------" + task.getExtendField()); - ToastUtils.showShort("我在下载=--------------::" + task.getExtendField() + "-------" + task.getPercent()); } @Download.onTaskComplete void taskComplete(DownloadTask task) { //在这里处理任务完成的状态 final String downloadPath = task.getFilePath(); - String packageName = task.getExtendField(); - LogUtils.e("mjsheng", "downloadPath::" + downloadPath); - LogUtils.e("mjsheng", "extendField::" + packageName); - if (packageName.equalsIgnoreCase(this.getPackageName())) { - ApkUtils.installApp(this,downloadPath); - } else { - new Thread(new Runnable() { - @Override - public void run() { - ApkUtils.installApp(GuardService.this, downloadPath); - } - }).start(); + if (null != task.getExtendField()) { + JSONObject jsonObject = JSON.parseObject(task.getExtendField()); + String packageName = jsonObject.getString("app_package"); + File file = new File(downloadPath); + int admin_id = (int) SPUtils.get(GuardService.this, "admin_id", -1); + DownloadApp downloadApp = NetWorkManager.getDownloadAppControl(); + downloadApp.sendDownloadApp(packageName, file.length(), Utils.getSerial(), admin_id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + + } + + @Override + public void onNext(@io.reactivex.annotations.NonNull BaseResponse baseResponse) { + int code = baseResponse.code; + String msg = baseResponse.msg; + Log.e("taskComplete", "onNext: " + "code" + code + ",msg:" + msg); + + } + + @Override + public void onError(@io.reactivex.annotations.NonNull Throwable e) { + Log.e("taskComplete", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); } + + new Thread(new Runnable() { + @Override + public void run() { + ApkUtils.installApp(GuardService.this, downloadPath); + } + }).start(); } } diff --git a/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java b/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java index ad66c43..b074446 100644 --- a/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java +++ b/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java @@ -36,15 +36,8 @@ import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import rx.Observable; -import rx.Observer; -import rx.Subscriber; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; - public class ApkUtils { - public static synchronized boolean getRootAhth() { Process process = null; DataOutputStream os = null; @@ -115,6 +108,17 @@ public class ApkUtils { } context.startActivity(intent); } + /** + * 卸载一个app + */ + public static void Uninstall(Context context, String packageName) { + //通过程序的包名创建URI + Uri packageURI = Uri.parse("package:" + packageName); + //创建Intent意图 + Intent intent = new Intent(Intent.ACTION_DELETE, packageURI); + //执行卸载程序 + context.startActivity(intent); + } /** * 根据包名卸载应用 @@ -213,94 +217,94 @@ public class ApkUtils { } - public static void installRx(final Context context, final String packageName, final String filePath) { - - Observable.create(new Observable.OnSubscribe() { - @Override - public void call(Subscriber subscriber) { - File file = new File(filePath); - if (filePath == null || filePath.length() == 0 || file == null) { - Log.e("fanhuitong", "errormesg=========" + " 空啊 "); - subscriber.onNext(0); - return; - } - // String[] args = { "pm", "install", "-r", filePath }; - String[] args = {"pm", "install", "-i", "com.colorflykids", "--user", "0", filePath}; - // String argss = "pm install -i " + "com.colorflykids" + " --user 0 " + filePath; - Log.e("fanhuitong", "argss====" + args); - ProcessBuilder processBuilder = new ProcessBuilder(args); - Process process = null; - BufferedReader successResult = null; - BufferedReader errorResult = null; - StringBuilder successMsg = new StringBuilder(); - StringBuilder errorMsg = new StringBuilder(); - try { - process = processBuilder.start(); - successResult = new BufferedReader(new InputStreamReader(process.getInputStream())); - errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); - String s; - while ((s = successResult.readLine()) != null) { - Log.e("mjhseng", "successResult----------" + s); - successMsg.append(s); - } - while ((s = errorResult.readLine()) != null) { - Log.e("mjhseng", "errorResult----------" + s); - errorMsg.append(s); - } - } catch (IOException e1) { - Log.e("fanhuitong", "IOException e1)----------" + e1.toString()); - e1.printStackTrace(); - } finally { - try { - if (successResult != null) { - successResult.close(); - } - if (errorResult != null) { - errorResult.close(); - } - } catch (IOException e1) { - Log.e("fanhuitong", "IOException e11)---------" + e1.toString()); - e1.printStackTrace(); - } - if (process != null) { - process.destroy(); - } - } - if (successMsg.toString().contains("Success") || successMsg.toString().contains("success")) { - subscriber.onNext(2); - } else { - Log.e("fanhuitong", "errormesg=========" + errorMsg.toString()); - subscriber.onNext(1); - } - } - }).subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - - @Override - public void onNext(Integer value) { - if (value == 2) { - //安装成功 - Utils.showToast(context, "安装成功"); - Log.e("fanhuitong", "-----------安装成功-----------"); - } else { - //安装错误 - Log.e("fanhuitong", "------------安装错误-----------"); - Utils.showToast(context, "安装失败"); - } - } - - @Override - public void onCompleted() { - - } - - @Override - public void onError(Throwable e) { - //安装错误 - } - }); - } +// public static void installRx(final Context context, final String packageName, final String filePath) { +// +// Observable.create(new Observable.OnSubscribe() { +// @Override +// public void call(Subscriber subscriber) { +// File file = new File(filePath); +// if (filePath == null || filePath.length() == 0 || file == null) { +// Log.e("fanhuitong", "errormesg=========" + " 空啊 "); +// subscriber.onNext(0); +// return; +// } +// // String[] args = { "pm", "install", "-r", filePath }; +// String[] args = {"pm", "install", "-i", "com.colorflykids", "--user", "0", filePath}; +// // String argss = "pm install -i " + "com.colorflykids" + " --user 0 " + filePath; +// Log.e("fanhuitong", "argss====" + args); +// ProcessBuilder processBuilder = new ProcessBuilder(args); +// Process process = null; +// BufferedReader successResult = null; +// BufferedReader errorResult = null; +// StringBuilder successMsg = new StringBuilder(); +// StringBuilder errorMsg = new StringBuilder(); +// try { +// process = processBuilder.start(); +// successResult = new BufferedReader(new InputStreamReader(process.getInputStream())); +// errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); +// String s; +// while ((s = successResult.readLine()) != null) { +// Log.e("mjhseng", "successResult----------" + s); +// successMsg.append(s); +// } +// while ((s = errorResult.readLine()) != null) { +// Log.e("mjhseng", "errorResult----------" + s); +// errorMsg.append(s); +// } +// } catch (IOException e1) { +// Log.e("fanhuitong", "IOException e1)----------" + e1.toString()); +// e1.printStackTrace(); +// } finally { +// try { +// if (successResult != null) { +// successResult.close(); +// } +// if (errorResult != null) { +// errorResult.close(); +// } +// } catch (IOException e1) { +// Log.e("fanhuitong", "IOException e11)---------" + e1.toString()); +// e1.printStackTrace(); +// } +// if (process != null) { +// process.destroy(); +// } +// } +// if (successMsg.toString().contains("Success") || successMsg.toString().contains("success")) { +// subscriber.onNext(2); +// } else { +// Log.e("fanhuitong", "errormesg=========" + errorMsg.toString()); +// subscriber.onNext(1); +// } +// } +// }).subscribeOn(Schedulers.newThread()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new Observer() { +// +// @Override +// public void onNext(Integer value) { +// if (value == 2) { +// //安装成功 +// Utils.showToast(context, "安装成功"); +// Log.e("fanhuitong", "-----------安装成功-----------"); +// } else { +// //安装错误 +// Log.e("fanhuitong", "------------安装错误-----------"); +// Utils.showToast(context, "安装失败"); +// } +// } +// +// @Override +// public void onCompleted() { +// +// } +// +// @Override +// public void onError(Throwable e) { +// //安装错误 +// } +// }); +// } public static void installApp(Context context, String filePath) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { @@ -595,5 +599,37 @@ public class ApkUtils { return name; } + public static boolean isInstalled(Context context, String packageName) { + PackageManager pm = context.getPackageManager(); + PackageInfo info = null; + try { + info = pm.getPackageInfo(packageName, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + return info != null; + } + + public static boolean isUpdate(Context context, String packageName, int versionCode) { + PackageManager pm = context.getPackageManager(); + PackageInfo info = null; + try { + info = pm.getPackageInfo(packageName, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (info != null) { + long appVersionCode; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + appVersionCode = info.getLongVersionCode(); + } else { + appVersionCode = info.versionCode; + } + return versionCode > appVersionCode; + }else { + return true; + } + } + } diff --git a/app/src/main/java/com/appstore/uiui/utils/FileUtils.java b/app/src/main/java/com/appstore/uiui/utils/FileUtils.java new file mode 100644 index 0000000..14c2c73 --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/utils/FileUtils.java @@ -0,0 +1,123 @@ +package com.appstore.uiui.utils; + +import android.content.Context; +import android.util.Log; + +import com.alibaba.fastjson.JSONObject; +import com.appstore.uiui.base.FilePath; +import com.arialyy.aria.core.Aria; + +import java.io.File; +import java.io.FileInputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.security.MessageDigest; + +public class FileUtils { + public static String getFileNamefromURL(String url) { + int position = url.lastIndexOf("/"); + return url.substring(position + 1); + } + + public static String getMD5fromFileName(String fileName) { + int position = fileName.lastIndexOf("/"); + return fileName.substring(position + 9, fileName.length() - 4); + } + + /** + * 获取单个文件的MD5值 + * + * @param file 文件 + * @return + */ + + public static String getFileMD5s(File file) { + if (!file.isFile()) { + return null; + } + MessageDigest digest = null; + FileInputStream in = null; + byte buffer[] = new byte[1024]; + int len; + try { + digest = MessageDigest.getInstance("MD5"); + in = new FileInputStream(file); + while ((len = in.read(buffer, 0, 1024)) != -1) { + digest.update(buffer, 0, len); + } + in.close(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + BigInteger bigInt = new BigInteger(1, digest.digest()); + return bigInt.toString(32); + } + + public static void ariaDownload(Context context, String url, JSONObject jsonObject) { + String fileName = getFileNamefromURL(url); + String urlMD5 = jsonObject.getString("MD5"); + Log.e("ariaDownload", "urlMD5=" + urlMD5); + File file = new File(FilePath.FileDownloadPath + "/jgy/" + fileName); + if (file.exists() && !file.isDirectory()) { + String filenameMD5 = getMD5fromFileName(url); + + String fileMD5 = FileUtils.getFileMD5s(file); + Log.e("ariaDownload", "filenameMD5=" + filenameMD5); + Log.e("ariaDownload", "fileMD5=" + fileMD5); + //后端还没有完成json字段的MD5,暂时用文件名获取 + if (fileMD5.equalsIgnoreCase(filenameMD5)) { + ApkUtils.installApp(context, file.getAbsolutePath()); + } else { + Aria.download(context) + .load(url) //读取下载地址 + .setFilePath(FilePath.FileDownloadPath + "/jgy/" + fileName, true) + .setExtendField(jsonObject.toJSONString()) + .create(); //启动下载} +// SaveListUtils.addDownLoadList(app_package); +// } + } + } else { + Aria.download(context) + .load(url) //读取下载地址 + .setFilePath(FilePath.FileDownloadPath + "/jgy/" + fileName, true) + .setExtendField(jsonObject.toJSONString()) + .create(); //启动下载} + } + } + + /** + * 格式化文件大小 + * + * @param size file.length() 获取文件大小 + */ + public static String formatFileSize(double size) { + if (size < 0) { + return "0kb"; + } + double kiloByte = size / 1024; + if (kiloByte < 1) { + return size + "b"; + } + + double megaByte = kiloByte / 1024; + if (megaByte < 1) { + BigDecimal result1 = new BigDecimal(Double.toString(kiloByte)); + return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "kb"; + } + + double gigaByte = megaByte / 1024; + if (gigaByte < 1) { + BigDecimal result2 = new BigDecimal(Double.toString(megaByte)); + return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "mb"; + } + + double teraBytes = gigaByte / 1024; + if (teraBytes < 1) { + BigDecimal result3 = new BigDecimal(Double.toString(gigaByte)); + return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "gb"; + } + BigDecimal result4 = new BigDecimal(teraBytes); + return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "tb"; + } +} diff --git a/app/src/main/java/com/appstore/uiui/utils/SaveListUtils.java b/app/src/main/java/com/appstore/uiui/utils/SaveListUtils.java deleted file mode 100644 index 599ec91..0000000 --- a/app/src/main/java/com/appstore/uiui/utils/SaveListUtils.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.appstore.uiui.utils; - -import android.util.Log; - -import com.appstore.uiui.common.CommonDatas; -import com.blankj.utilcode.util.SPStaticUtils; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; - -public class SaveListUtils { - private static List downLoadList = 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()); - return list; - } - - public static void addToList(String data) { - List list = getList(); -// Log.e("mjshenglist2", list.toString()); - - if (list == null) { - list = new ArrayList<>(); - } - if (!list.contains(data)) { - list.add(data); - Gson gson = new Gson(); - String gsonData = gson.toJson(list); - SPStaticUtils.put(CommonDatas.FORCE_INSTALL, gsonData); - } - } - - public static List getDownLoadList() { - - return downLoadList; - } - - public static void addDownLoadList(String packageName) { - if (downLoadList == null) { - downLoadList = new ArrayList<>(); - downLoadList.add(packageName); - } else { - if (!downLoadList.contains(packageName)) { - downLoadList.add(packageName); - } - } - } - - public static boolean isDownLoading(String packageName) { - if (downLoadList.contains(packageName)) { - return true; - } else return false; - } -} diff --git a/app/src/main/java/com/appstore/uiui/utils/StorageUtils.java b/app/src/main/java/com/appstore/uiui/utils/StorageUtils.java index 2745a8e..0e9c820 100644 --- a/app/src/main/java/com/appstore/uiui/utils/StorageUtils.java +++ b/app/src/main/java/com/appstore/uiui/utils/StorageUtils.java @@ -120,5 +120,23 @@ public class StorageUtils { return "" + (size) + "KB"; } } + //将字节数转化为MB + public static String byteToMB(long size){ + long kb = 1024; + long mb = kb*1024; + long gb = mb*1024; + if (size >= gb){ + return String.format("%.1f GB",(float)size/gb); + }else if (size >= mb){ + float f = (float) size/mb; + return String.format(f > 100 ?"%.0f MB":"%.1f MB",f); + }else if (size > kb){ + float f = (float) size / kb; + return String.format(f>100?"%.0f KB":"%.1f KB",f); + }else { + return String.format("%d B",size); + } + } + } diff --git a/app/src/main/java/com/appstore/uiui/utils/Utils.java b/app/src/main/java/com/appstore/uiui/utils/Utils.java index fa4c4d4..fb4ba28 100644 --- a/app/src/main/java/com/appstore/uiui/utils/Utils.java +++ b/app/src/main/java/com/appstore/uiui/utils/Utils.java @@ -33,8 +33,11 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.Toast; +import com.alibaba.fastjson.JSONObject; import com.appstore.uiui.R; +import com.arialyy.aria.core.Aria; +import java.io.File; import java.io.FileReader; import java.io.InputStreamReader; import java.io.LineNumberReader; @@ -49,103 +52,12 @@ import java.util.List; public class Utils { - - public static final String PACKAGE = "appstore"; - public static final String DOWNLOAD_STARTALL_ACTION = PACKAGE + "_startall"; // 开始所有任务 - public static final String DOWNLOAD_DELETE_UPDATE_ACTION = PACKAGE + "_download_update_delete"; // 删除应用更新文件 - public static final String DOWNLOAD_DELETEALL_ACTION = PACKAGE + "_deleteall_alltask"; // 删除所有任务 - public static final String DOWNLOAD_ALLTASK_ACTION = PACKAGE + "_download_alltask"; // 获取所有任务 - public static final String DOWNLOAD_START_ACTION = PACKAGE + "_download_start"; // 下载标识 - public static final String DOWNLOAD_STOP_ACTION = PACKAGE + "_download_stop"; // 暂停标识 - public static final String DOWNLOAD_DELETE_PACKAGENAME_ACTION = PACKAGE + "_download_packagename_delete"; // 删除标识 根据包名 - public static final String DOWNLOAD_DELETE_URL_ACTION = PACKAGE + "_download_url_delete"; // 删除标识 根据下载地址 - public static final String DOWNLOAD_INITIALIZE_ACTION = PACKAGE + "_download_initialize"; // item初始化状态 - public static final String DOWNLOAD_PACKAGENAME_ACTION = PACKAGE + "_download_packagename"; // item初始化状态 包名 - public static final String DOWNLOAD_SERVICE_ACTION = PACKAGE + "_download_service"; // 下载状态回调服务 - - public static final String DOWNLOAD_ALLSERVICE_ACTION = PACKAGE + "_download_allservice"; // 返回所有下载任务 - public static final String DOWNLOAD_NEWSERVICE_ACTION = PACKAGE + "_download_newservice"; // 一个新的下载任务 - - // JPush 推送消息 - public static final String MESSAGE_RECEIVED_ACTION = "com.appstore.jpushdemo.MESSAGE_RECEIVED_ACTION"; - public static final String KEY_TITLE = "title"; // 消息标题 - public static final String KEY_MESSAGE = "message"; // 消息内容 - public static final String KEY_EXTRAS = "extras"; // 消息内容类型 - public static final String KEY_TYPE = "type"; // 消息内容类型 - - - public static final String ACTION_PACKAGE_REPLACED = PACKAGE + "PACKAGE_REPLACED"; // 替换应用 - public static final String ACTION_PACKAGE_REMOVED = PACKAGE + "PACKAGE_REMOVED"; // 卸载应用 - public static final String ACTION_PACKAGE_ADDED = PACKAGE + "PACKAGE_ADDED"; // 安装应用 - -// public static int[] babyImage = {R.drawable.language, R.drawable.habit, R.drawable.knowledge, R.drawable.security, R.drawable.promotion}; -// public static int[] childImage = {R.drawable.yuwen, R.drawable.shuxue, R.drawable.yingyu, R.drawable.qingshang, R.drawable.yishu, R.drawable.promotion}; -// public static int[] youngImage = {R.drawable.yuwen, R.drawable.shuxue, R.drawable.yingyu, R.drawable.promotion}; - // 学习日志上传标识 - public static final String APP_LRARNLOG = "com.colorflykids.alarm"; - // 学习日志下载标识 - public static final String APP_DOWNLOADLEARNLOG = "com.colorflykids.downloadlearnlog"; - // 账号注销标识 - public static final String APP_USERLOGOUT = "com.colorflykids.userlogout"; - - - public static final String UPDATE_SYSTEMUI = "cn.colorflykids.UPDATE_SYSTEMUI"; - public static final int COUNT_ONE_PAGE = 8; - 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", - "8", "9", "10", "0", "11"}; - public static final String STORE = "store"; - public static final String CATEGORY_THREE = "3"; - public static final String CATEGORY_SIX = "6"; - public static final String CATEGORY_UPSIX = "10"; - public static final String CLOSE_REST_WINDOW = "colse_rest_window"; - public static final String STOP_LOOPING_TIMER = "stop_looping_timer"; - public static final String START_LOOPING_TIMER = "start_looping_timer"; - public static String DOWNLOADAPP_CALLBACK = "com.colorflykids.downloadapp"; // 子界面下载回调 提示更新UI - public static String MENU_YOUYOU = "youyou"; - public static String MENU_LANGUAGE = "语言启蒙"; - public static String MENU_HABIT = "行为习惯"; - public static String MENU_KNOWLEDGE = "生活认知"; - public static String MENU_SECURITY = "安全自理"; - public static String MENU_PROMOTION = "入园-综合提升"; - public static String MENU_LY = "优优乐园"; - public static String MENU_YW = "语文知识"; - public static String MENU_SX = "数理逻辑"; - public static String MENU_YY = "英语启蒙"; - public static String MENU_QS = "情商培养"; - public static String MENU_YS = "艺术提升"; - public static String MENU_ZH = "学前-综合提升"; - public static String MENU_TONGBUJIAOCAI = "同步教材"; - public static String MENU_YUWEN = "语文"; - public static String MENU_SHUXUE = "数学"; - public static String MENU_YINGYU = "英语"; - public static String MENU_ZONGHETISHEGN = "小学-综合提升"; - public static String[] babySystem = {MENU_LANGUAGE, MENU_HABIT, MENU_KNOWLEDGE, MENU_SECURITY, MENU_PROMOTION}; - public static String[] childSystem = {MENU_LY, MENU_YW, MENU_SX, MENU_YY, MENU_QS, MENU_YS, MENU_ZH}; - public static String[] youngSystem = {MENU_YUWEN, MENU_SHUXUE, MENU_YINGYU, MENU_ZONGHETISHEGN}; - - - public static String[] sonSystem = {MENU_HABIT, MENU_SECURITY, MENU_LANGUAGE, MENU_KNOWLEDGE, MENU_PROMOTION, - MENU_LY, MENU_YW, MENU_SX, MENU_YY, MENU_QS, MENU_YS, MENU_ZH, - MENU_TONGBUJIAOCAI, MENU_YUWEN, MENU_SHUXUE, MENU_YINGYU, MENU_YINGYU, MENU_ZONGHETISHEGN}; - public static String[][] tagList = {babySystem, childSystem, youngSystem}; - public static String subcategories[][] = {babySystem, childSystem, youngSystem}; - public static String system[] = {"入园系统", "学前系统", "小学系统"}; - public static String systemandno[] = {"入园系统", "学前系统", "小学系统", "未分配"}; protected static Toast toast = null; private static String oldMsg; private static long oneTime = 0; private static long twoTime = 0; - // 积分记录 达人标准次数记录 - - - // MD5 设备地址标识 // public static String getMAC(Context context) { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 如果当前设备系统大于等于6.0 使用下面的方法 @@ -797,4 +709,7 @@ public class Utils { return bitmap; } + + + } \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_shap_download.xml b/app/src/main/res/drawable/btn_shap_download.xml new file mode 100644 index 0000000..334277a --- /dev/null +++ b/app/src/main/res/drawable/btn_shap_download.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_details.xml b/app/src/main/res/layout-land/activity_details.xml index d729d30..903a8bd 100644 --- a/app/src/main/res/layout-land/activity_details.xml +++ b/app/src/main/res/layout-land/activity_details.xml @@ -112,7 +112,8 @@ android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:overScrollMode="never" - android:scrollbars="none"> + android:scrollbars="none" + android:visibility="gone"> @@ -152,6 +154,7 @@ android:layout_marginTop="@dimen/dp_2" android:layout_marginRight="@dimen/dp_15" android:text="更新" + android:visibility="gone" android:textSize="@dimen/sp_16" android:textStyle="bold"> @@ -175,6 +178,7 @@ android:layout_marginTop="@dimen/dp_2" android:layout_marginRight="@dimen/dp_15" android:text="信息" + android:visibility="gone" android:textSize="@dimen/sp_16" android:textStyle="bold"> @@ -195,6 +199,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dp_15" android:layout_marginRight="@dimen/dp_15" + android:visibility="gone" android:text="版本" /> diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index 5c0bfc4..34320e7 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -36,6 +36,7 @@ android:layout_marginStart="20dp" android:layout_marginLeft="20dp" android:layout_marginEnd="20dp" + android:visibility="gone" android:layout_weight="1"> diff --git a/app/src/main/res/layout-land/item_app.xml b/app/src/main/res/layout-land/item_app.xml index a983ea0..cf43ce3 100644 --- a/app/src/main/res/layout-land/item_app.xml +++ b/app/src/main/res/layout-land/item_app.xml @@ -35,7 +35,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1.5" - android:gravity="center_vertical" + android:gravity="bottom" android:singleLine="true" android:text="今日头条" android:textColor="@color/black" @@ -48,6 +48,7 @@ android:gravity="center_vertical" android:singleLine="true" android:text="北京字节跳动网络技术有限公司" + android:visibility="gone" android:textSize="12sp" /> @@ -78,7 +79,7 @@ android:stateListAnimator="@null" android:layout_gravity="center_vertical" android:layout_marginRight="10dp" - android:background="@drawable/btn_style_none" + android:background="@drawable/btn_shap_download" android:text="下载中" android:textSize="@dimen/sp_16" android:visibility="visible" /> diff --git a/app/src/main/res/layout-port/activity_details.xml b/app/src/main/res/layout-port/activity_details.xml index 876868e..6abcddd 100644 --- a/app/src/main/res/layout-port/activity_details.xml +++ b/app/src/main/res/layout-port/activity_details.xml @@ -112,7 +112,8 @@ android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:overScrollMode="never" - android:scrollbars="none"> + android:scrollbars="none" + android:visibility="gone"> @@ -153,6 +155,7 @@ android:layout_marginRight="@dimen/dp_15" android:text="更新" android:textSize="@dimen/sp_16" + android:visibility="gone" android:textStyle="bold"> @@ -176,6 +179,7 @@ android:layout_marginRight="@dimen/dp_15" android:text="信息" android:textSize="@dimen/sp_16" + android:visibility="gone" android:textStyle="bold"> @@ -195,6 +199,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dp_15" android:layout_marginRight="@dimen/dp_15" + android:visibility="gone" android:text="版本" /> diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml index 58107b0..3168f8f 100644 --- a/app/src/main/res/layout-port/activity_main.xml +++ b/app/src/main/res/layout-port/activity_main.xml @@ -36,6 +36,7 @@ android:layout_marginStart="20dp" android:layout_marginLeft="20dp" android:layout_marginEnd="20dp" + android:visibility="gone" android:layout_weight="1"> diff --git a/app/src/main/res/layout-port/item_app.xml b/app/src/main/res/layout-port/item_app.xml index a983ea0..cf43ce3 100644 --- a/app/src/main/res/layout-port/item_app.xml +++ b/app/src/main/res/layout-port/item_app.xml @@ -35,7 +35,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1.5" - android:gravity="center_vertical" + android:gravity="bottom" android:singleLine="true" android:text="今日头条" android:textColor="@color/black" @@ -48,6 +48,7 @@ android:gravity="center_vertical" android:singleLine="true" android:text="北京字节跳动网络技术有限公司" + android:visibility="gone" android:textSize="12sp" /> @@ -78,7 +79,7 @@ android:stateListAnimator="@null" android:layout_gravity="center_vertical" android:layout_marginRight="10dp" - android:background="@drawable/btn_style_none" + android:background="@drawable/btn_shap_download" android:text="下载中" android:textSize="@dimen/sp_16" android:visibility="visible" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e29016f..84daecb 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -15,4 +15,6 @@ #F1F1F1 #d64743 #00a0e9 + #E9E9E9 +