From 36ef5408373a367fd3531f7c3e2387c519b31433 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Wed, 28 Dec 2022 16:47:34 +0800 Subject: [PATCH] =?UTF-8?q?version:7.1=20fix:=20update:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E7=95=8C=E9=9D=A2=EF=BC=8C=E5=8E=BB=E6=8E=89?= =?UTF-8?q?fastjson=EF=BC=8C=E4=BF=AE=E5=A4=8D=E6=9C=AC=E5=9C=B0=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 9 +- app/src/main/AndroidManifest.xml | 2 +- .../appstore/activity/DetailsActivity.java | 124 +++--- .../com/uiui/appstore/adapter/AppAdapter.java | 18 +- .../adapter/DownloadManagerAdapter.java | 12 +- .../uiui/appstore/adapter/ImageAdapter.java | 8 +- .../uiui/appstore/network/HTTPInterface.java | 7 +- .../appstore/network/NetInterfaceManager.java | 6 +- .../uiui/appstore/service/GuardService.java | 8 +- .../appstore/service/main/MainService.java | 4 +- .../uiui/appstore/tpush/MessageReceiver.java | 9 +- .../com/uiui/appstore/utils/ApkUtils.java | 27 +- .../com/uiui/appstore/utils/FileUtils.java | 22 +- .../com/uiui/appstore/utils/JGYUtils.java | 32 +- .../java/com/uiui/appstore/utils/Utils.java | 1 + .../res/drawable-xhdpi/icon_download_task.png | Bin 2820 -> 940 bytes .../main/res/drawable-xhdpi/icon_my_task.png | Bin 2436 -> 1006 bytes .../res/drawable-xhdpi/icon_update_task.png | Bin 2022 -> 1438 bytes .../main/res/drawable-xhdpi/ratingbar_off.png | Bin 0 -> 654 bytes .../main/res/drawable-xhdpi/ratingbar_on.png | Bin 0 -> 592 bytes .../res/drawable-xxxhdpi/ratingbar_off.png | Bin 1681 -> 0 bytes .../res/drawable-xxxhdpi/ratingbar_on.png | Bin 2058 -> 0 bytes .../main/res/layout-land/activity_details.xml | 97 ++-- .../main/res/layout-land/activity_main.xml | 46 +- app/src/main/res/layout-land/item_app.xml | 38 +- .../res/layout-land/item_download_manager.xml | 48 +- .../main/res/layout-land/item_local_app.xml | 27 +- .../main/res/layout-port/activity_details.xml | 73 +-- .../main/res/layout-port/activity_main.xml | 46 +- app/src/main/res/layout-port/item_app.xml | 91 ++-- .../res/layout-port/item_download_manager.xml | 49 +- app/src/main/res/layout-port/item_image.xml | 15 - .../main/res/layout-port/item_local_app.xml | 22 +- .../{layout-land => layout}/item_image.xml | 8 +- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 7055 -> 4654 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 7055 -> 4654 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 7055 -> 4654 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7055 -> 4654 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 7055 -> 4654 bytes app/src/main/res/values-sw1024dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw1280dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw1365dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw320dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw360dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw362dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw384dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw392dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw400dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw410dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw411dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw432dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw451dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw480dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw533dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw540dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw592dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw600dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw640dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw662dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw720dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw768dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw800dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw811dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw820dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw960dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values-sw961dp/dimens.xml | 421 ++++++++++++++++++ app/src/main/res/values/styles.xml | 4 +- 67 files changed, 11762 insertions(+), 458 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/ratingbar_off.png create mode 100644 app/src/main/res/drawable-xhdpi/ratingbar_on.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ratingbar_off.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ratingbar_on.png delete mode 100644 app/src/main/res/layout-port/item_image.xml rename app/src/main/res/{layout-land => layout}/item_image.xml (71%) create mode 100644 app/src/main/res/values-sw1024dp/dimens.xml create mode 100644 app/src/main/res/values-sw1280dp/dimens.xml create mode 100644 app/src/main/res/values-sw1365dp/dimens.xml create mode 100644 app/src/main/res/values-sw320dp/dimens.xml create mode 100644 app/src/main/res/values-sw360dp/dimens.xml create mode 100644 app/src/main/res/values-sw362dp/dimens.xml create mode 100644 app/src/main/res/values-sw384dp/dimens.xml create mode 100644 app/src/main/res/values-sw392dp/dimens.xml create mode 100644 app/src/main/res/values-sw400dp/dimens.xml create mode 100644 app/src/main/res/values-sw410dp/dimens.xml create mode 100644 app/src/main/res/values-sw411dp/dimens.xml create mode 100644 app/src/main/res/values-sw432dp/dimens.xml create mode 100644 app/src/main/res/values-sw451dp/dimens.xml create mode 100644 app/src/main/res/values-sw480dp/dimens.xml create mode 100644 app/src/main/res/values-sw533dp/dimens.xml create mode 100644 app/src/main/res/values-sw540dp/dimens.xml create mode 100644 app/src/main/res/values-sw592dp/dimens.xml create mode 100644 app/src/main/res/values-sw600dp/dimens.xml create mode 100644 app/src/main/res/values-sw640dp/dimens.xml create mode 100644 app/src/main/res/values-sw662dp/dimens.xml create mode 100644 app/src/main/res/values-sw720dp/dimens.xml create mode 100644 app/src/main/res/values-sw768dp/dimens.xml create mode 100644 app/src/main/res/values-sw800dp/dimens.xml create mode 100644 app/src/main/res/values-sw811dp/dimens.xml create mode 100644 app/src/main/res/values-sw820dp/dimens.xml create mode 100644 app/src/main/res/values-sw960dp/dimens.xml create mode 100644 app/src/main/res/values-sw961dp/dimens.xml diff --git a/app/build.gradle b/app/build.gradle index 0ffce50..1cc3bd1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,8 +45,8 @@ android { productFlavors { official { flavorDimensions "default" - versionCode 56 - versionName "6.5" + versionCode 62 + versionName "7.1" } } @@ -218,15 +218,10 @@ dependencies { //google implementation 'com.google.code.gson:gson:2.9.0' implementation 'com.google.zxing:core:3.5.0' - //fastjson - implementation 'com.alibaba:fastjson:1.2.83' //MMKV implementation 'com.tencent:mmkv-static:1.2.13' //腾讯移动推送 TPNS implementation 'com.tencent.tpns:tpns:1.3.2.0-release' -// //极光推送 -// implementation 'cn.jiguang.sdk:jpush:3.8.6' // 此处以JPush 3.4.1 版本为例。 -// implementation 'cn.jiguang.sdk:jcore:2.6.0' // 此处以JCore 2.2.4 版本为例。 //banner图 implementation 'com.zhpan.library:bannerview:2.6.4' //更换字体框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 33c7457..ed26802 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -55,7 +55,7 @@ android:theme="@style/ImmerseTheme"> + android:configChanges="keyboardHidden|screenSize"> diff --git a/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java b/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java index fd21b0e..384d51d 100644 --- a/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java +++ b/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java @@ -16,8 +16,15 @@ 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.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.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.uiui.appstore.R; import com.uiui.appstore.adapter.ImageAdapter; import com.uiui.appstore.base.BaseActivity; @@ -30,34 +37,54 @@ import com.uiui.appstore.utils.ApkUtils; import com.uiui.appstore.utils.FileUtils; import com.uiui.appstore.utils.StorageUtils; import com.uiui.appstore.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 java.io.File; import java.util.ArrayList; import java.util.List; +import butterknife.BindView; +import butterknife.ButterKnife; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; public class DetailsActivity extends BaseActivity { - private String TAG = DetailsActivity.class.getSimpleName(); + private static final String TAG = DetailsActivity.class.getSimpleName(); + + + @BindView(R.id.detail_tv_title) + TextView tv_title; + @BindView(R.id.detail_tv_name) + TextView tv_name; + @BindView(R.id.detail_tv_company) + TextView tv_company; + @BindView(R.id.detail_tv_update_time) + TextView tv_update_time; + @BindView(R.id.detail_tv_version) + TextView tv_version; + @BindView(R.id.detali_tv_content) + TextView tv_content; + @BindView(R.id.detali_tv_size) + TextView detali_tv_size; + @BindView(R.id.detail_tv_Developers) + TextView detail_tv_Developers; + @BindView(R.id.detali_tv_version) + TextView detali_tv_version; + @BindView(R.id.detail_tv_download) + Button tv_download; + @BindView(R.id.detail_rating_bar) + RatingBar rating_bar; + @BindView(R.id.detail_iv_icon) + ImageView iv_icon; + @BindView(R.id.detail_rv_image) + RecyclerView rv_image; + @BindView(R.id.scrollView) + HorizontalScrollView scrollView; - private TextView tv_title, tv_name, tv_company, tv_update_time, tv_version, tv_content, detali_tv_size, detail_tv_Developers; - private Button tv_download; - private RatingBar rating_bar; - private ImageView iv_icon; - private RecyclerView rv_image; - private AppInfo appInfo; private ImageAdapter imageAdapter; private installReceiver myReceiver; - private HorizontalScrollView scrollView; + private AppInfo appInfo; @Override protected int setLayoutResourceID() { @@ -66,19 +93,12 @@ public class DetailsActivity extends BaseActivity { @Override protected void initView() { -// tv_title = findViewById(R.id.detail_tv_title); - tv_name = findViewById(R.id.detail_tv_name); - tv_company = findViewById(R.id.detail_tv_company); - tv_update_time = findViewById(R.id.detail_tv_update_time); - tv_version = findViewById(R.id.detail_tv_version); - tv_content = findViewById(R.id.detali_tv_content); - tv_download = findViewById(R.id.detail_tv_download); - rating_bar = findViewById(R.id.detail_rating_bar); - iv_icon = findViewById(R.id.detail_iv_icon); - rv_image = findViewById(R.id.detail_rv_image); - detali_tv_size = findViewById(R.id.detali_tv_size); - detail_tv_Developers = findViewById(R.id.detail_tv_Developers); - scrollView = findViewById(R.id.scrollView); + ButterKnife.bind(this); + rv_image.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + CustomSnapHelper snapHelper = new CustomSnapHelper(); + snapHelper.attachToRecyclerView(rv_image); + imageAdapter = new ImageAdapter(); + rv_image.setAdapter(imageAdapter); } @Override @@ -104,12 +124,10 @@ public class DetailsActivity extends BaseActivity { tv_update_time.setText("时间\t" + appInfo.getCreatetime()); tv_version.setText("版本\t" + appInfo.getApp_version_name()); tv_content.setText(appInfo.getApp_desc()); + detali_tv_version.setText("版本:" + appInfo.getApp_version_name()); rating_bar.setRating((float) appInfo.getApp_score()); - Glide.with(this).asBitmap().load(appInfo.getApp_img()).transform(new GlideCircleWithBorder(this)) - .into(iv_icon); - rv_image.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); - CustomSnapHelper snapHelper = new CustomSnapHelper(); - snapHelper.attachToRecyclerView(rv_image); + Glide.with(this).asBitmap().load(appInfo.getApp_img()).transform(new GlideCircleWithBorder(this)).into(iv_icon); + setImage(appInfo); final boolean installed = ApkUtils.isInstalled(DetailsActivity.this, appInfo.getApp_package()); final boolean update = ApkUtils.isUpdate(DetailsActivity.this, appInfo.getApp_package(), appInfo.getApp_version_code()); @@ -128,14 +146,6 @@ public class DetailsActivity extends BaseActivity { 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(); DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(appInfo.getApp_url()); if (null != entity) { switch (entity.getState()) { @@ -160,11 +170,15 @@ public class DetailsActivity extends BaseActivity { ApkUtils.installApp(DetailsActivity.this, entity.getFilePath()); } else { Aria.download(this).load(entity.getId()).cancel(true); - JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo); + JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject(); FileUtils.ariaDownload(DetailsActivity.this, appInfo.getApp_url(), jsonObject); } break; + default: } + } else { + JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject(); + FileUtils.ariaDownload(DetailsActivity.this, appInfo.getApp_url(), jsonObject); } } } @@ -177,13 +191,9 @@ public class DetailsActivity extends BaseActivity { this.add(info.getApp_preview2()); this.add(info.getApp_preview3()); }}; - imageAdapter = new ImageAdapter(); imageAdapter.setData(list); - rv_image.setAdapter(imageAdapter); - } - void getPackageApp(String packageName, long versionCode) { NetInterfaceManager.getInstance() .getQueryPackageAppControl() @@ -193,32 +203,24 @@ public class DetailsActivity extends BaseActivity { .subscribe(new Observer>() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG, "onSubscribe: "); + Log.e("getPackageApp", "onSubscribe: "); } @Override public void onNext(BaseResponse appInfoBaseResponse) { + Log.e("getPackageApp", "onNext: " + appInfoBaseResponse); if (appInfoBaseResponse.code == 200) { AppInfo info = appInfoBaseResponse.data; - boolean haveImage = false; if (!TextUtils.isEmpty(info.getApp_preview1())) { appInfo.setApp_preview1(info.getApp_preview1()); - haveImage = true; } if (!TextUtils.isEmpty(info.getApp_preview2())) { appInfo.setApp_preview2(info.getApp_preview2()); - haveImage = true; } if (!TextUtils.isEmpty(info.getApp_preview3())) { appInfo.setApp_preview3(info.getApp_preview3()); - haveImage = true; } appInfo.setApp_version_name(info.getApp_version_name()); - if (haveImage) { - scrollView.setVisibility(View.VISIBLE); - } else { - scrollView.setVisibility(View.GONE); - } setImage(appInfo); } else { scrollView.setVisibility(View.GONE); @@ -227,12 +229,12 @@ public class DetailsActivity extends BaseActivity { @Override public void onError(Throwable e) { - Log.e(TAG, "onError: " + e.getMessage()); + Log.e("getPackageApp", "onError: " + e.getMessage()); } @Override public void onComplete() { - Log.e(TAG, "onComplete: "); + Log.e("getPackageApp", "onComplete: "); } }); } @@ -258,6 +260,7 @@ public class DetailsActivity extends BaseActivity { case IEntity.STATE_RUNNING: tv_download.setText(task.getPercent() + "%"); break; + default: } } } @@ -350,13 +353,12 @@ public class DetailsActivity extends BaseActivity { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); //接收安装广播 - if (action.equals("com.uiui.appstore.PACKAGE_ADDED") || action.equals("com.uiui.appstore.PACKAGE_REPLACED")) { + if ("com.uiui.appstore.PACKAGE_ADDED".equals(action) || "com.uiui.appstore.PACKAGE_REPLACED".equals(action)) { String packageName = intent.getStringExtra("package"); if (packageName.equalsIgnoreCase(appInfo.getApp_package())) { tv_download.setText("打开"); } } - } } diff --git a/app/src/main/java/com/uiui/appstore/adapter/AppAdapter.java b/app/src/main/java/com/uiui/appstore/adapter/AppAdapter.java index c9f8e2d..6667fab 100644 --- a/app/src/main/java/com/uiui/appstore/adapter/AppAdapter.java +++ b/app/src/main/java/com/uiui/appstore/adapter/AppAdapter.java @@ -2,6 +2,7 @@ package com.uiui.appstore.adapter; import android.content.Context; import android.content.Intent; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,17 +13,19 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; 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.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.uiui.appstore.R; import com.uiui.appstore.activity.DetailsActivity; import com.uiui.appstore.bean.AppInfo; +import com.uiui.appstore.bean.GlideCircleWithBorder; import com.uiui.appstore.utils.ApkUtils; import com.uiui.appstore.utils.FileUtils; import com.uiui.appstore.utils.StorageUtils; @@ -60,7 +63,7 @@ public class AppAdapter extends RecyclerView.Adapter { .load(appInfo.getApp_img()) .error(R.mipmap.ic_launcher) // .placeholder(R.drawable.ic_place_holder) -// .transform(new GlideCircleWithBorder(mContext)) + .transform(new GlideCircleWithBorder(mContext)) .into(holder.ivIcon); holder.tvCompany.setText(appInfo.getApp_developer()); holder.tvName.setText(appInfo.getApp_name()); @@ -133,7 +136,7 @@ public class AppAdapter extends RecyclerView.Adapter { ApkUtils.installApp(mContext, entity.getFilePath()); } else { Aria.download(this).load(entity.getId()).cancel(true); - JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo); + JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject(); FileUtils.ariaDownload(mContext, appInfo.getApp_url(), jsonObject); } @@ -141,13 +144,8 @@ public class AppAdapter extends RecyclerView.Adapter { default: } } else { -// downloadApk(appInfo); - JSONObject jsonObject = (JSONObject) JSON.toJSON(appInfo); + JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject(); 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(); } } } diff --git a/app/src/main/java/com/uiui/appstore/adapter/DownloadManagerAdapter.java b/app/src/main/java/com/uiui/appstore/adapter/DownloadManagerAdapter.java index e2a0d71..00d6d97 100644 --- a/app/src/main/java/com/uiui/appstore/adapter/DownloadManagerAdapter.java +++ b/app/src/main/java/com/uiui/appstore/adapter/DownloadManagerAdapter.java @@ -12,7 +12,9 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.uiui.appstore.R; import com.uiui.appstore.utils.FileUtils; import com.uiui.appstore.view.NumberProgressBar; @@ -86,14 +88,15 @@ public class DownloadManagerAdapter extends RecyclerView.Adapter { - private List mSrcList; private Context mContext; @@ -29,16 +30,17 @@ public class ImageAdapter extends RecyclerView.Adapter { if (platform == JGYUtils.MTKPlatform) { set.add(JGYUtils.MTKTag); - } else if (platform == JGYUtils.ZhanruiPlatform) { + } else if (platform == JGYUtils.CubePlatform) { set.add(JGYUtils.ZhanruiTag); + } else if (platform == JGYUtils.ZhanruiPlatform) { + set.add(JGYUtils.NewZhanruiTag); + } else if (platform == JGYUtils.UMTK11Platform) { + set.add(JGYUtils.UMTK11Tag); } }); getBatchApiControl() diff --git a/app/src/main/java/com/uiui/appstore/service/GuardService.java b/app/src/main/java/com/uiui/appstore/service/GuardService.java index 5afad93..c156557 100644 --- a/app/src/main/java/com/uiui/appstore/service/GuardService.java +++ b/app/src/main/java/com/uiui/appstore/service/GuardService.java @@ -18,11 +18,11 @@ import android.util.Log; import androidx.annotation.Nullable; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.arialyy.annotations.Download; import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.task.DownloadTask; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.uiui.appstore.KeepAliveConnection; import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.network.NetInterfaceManager; @@ -127,8 +127,8 @@ public class GuardService extends Service { //在这里处理任务完成的状态 final String downloadPath = task.getFilePath(); if (null != task.getExtendField()) { - JSONObject jsonObject = JSON.parseObject(task.getExtendField()); - String packageName = jsonObject.getString("app_package"); + JsonObject jsonObject = JsonParser.parseString(task.getExtendField()).getAsJsonObject(); + String packageName = jsonObject.get("app_package").getAsString(); File file = new File(downloadPath); int admin_id = (int) SPUtils.get(GuardService.this, "admin_id", -1); NetInterfaceManager.getInstance() diff --git a/app/src/main/java/com/uiui/appstore/service/main/MainService.java b/app/src/main/java/com/uiui/appstore/service/main/MainService.java index 8fef205..23f34cf 100644 --- a/app/src/main/java/com/uiui/appstore/service/main/MainService.java +++ b/app/src/main/java/com/uiui/appstore/service/main/MainService.java @@ -30,9 +30,9 @@ import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.subjects.BehaviorSubject; public class MainService extends Service implements MainSContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider { - private String TAG = MainService.class.getSimpleName(); + private static final String TAG = MainService.class.getSimpleName(); - private final String DOWNLOAD_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + "jgy"; + private final String DOWNLOAD_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + "uiui"; public MainSPresenter mPresenter; diff --git a/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java b/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java index 56d1f2a..b9b7492 100644 --- a/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java +++ b/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java @@ -9,8 +9,6 @@ import android.text.TextUtils; import android.util.Log; import android.widget.Toast; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.download.DownloadEntity; import com.google.gson.JsonObject; @@ -21,7 +19,6 @@ import com.tencent.android.tpush.XGPushClickedResult; import com.tencent.android.tpush.XGPushRegisterResult; import com.tencent.android.tpush.XGPushShowedResult; import com.tencent.android.tpush.XGPushTextMessage; -import com.uiui.appstore.gson.GsonUtils; import com.uiui.appstore.tpush.common.NotificationService; import com.uiui.appstore.tpush.po.XGNotification; import com.uiui.appstore.utils.FileUtils; @@ -327,10 +324,10 @@ public class MessageReceiver extends XGPushBaseReceiver { if (TextUtils.isEmpty(jsonString)) { return; } - JSONObject jsonObject = (JSONObject) JSON.parse(jsonString); - final String packages = jsonObject.getString("package"); + JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); + final String packages = jsonObject.get("package").getAsString(); ToastUtil.debugShow("收到应用安装消息:包名" + packages); - String url = jsonObject.getString("url"); + String url = jsonObject.get("url").getAsString(); if (TextUtils.isEmpty(url)) { return; } diff --git a/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java b/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java index 26e3139..960670a 100644 --- a/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java @@ -655,12 +655,12 @@ public class ApkUtils { Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); List resolveInfoList = context.getPackageManager().queryIntentActivities(intent, 0); - String aole_force_app = Settings.System.getString(context.getContentResolver(), "aole_force_app"); - if (TextUtils.isEmpty(aole_force_app)) { - return appList; - } - Set forceAppSet = new HashSet<>(Arrays.asList(aole_force_app.split(","))); - forceAppSet.addAll(fuxiaoyingApp); +// String aole_force_app = Settings.System.getString(context.getContentResolver(), "aole_force_app"); +// if (TextUtils.isEmpty(aole_force_app)) { +// return appList; +// } +// Set forceAppSet = new HashSet<>(Arrays.asList(aole_force_app.split(","))); +// forceAppSet.addAll(fuxiaoyingApp); for (int i = 0; i < resolveInfoList.size(); i++) { LocalApp bean = new LocalApp(); @@ -675,18 +675,18 @@ public class ApkUtils { bean.setPackageName(packageName); Drawable icon = resolveInfoList.get(i).loadIcon(context.getPackageManager()); bean.setIcon(icon); - if (forceAppSet.contains(packageName)) { - bean.setCanUnintall(false); - } else { - bean.setCanUnintall(true); - } +// if (forceAppSet.contains(packageName)) { +// bean.setCanUnintall(false); +// } else { +// bean.setCanUnintall(true); +// } try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, 0); String versionCode = context.getPackageManager() .getPackageInfo(packageName, 0).versionName; bean.setVersion(versionCode); String appInstallDir = packageInfo.applicationInfo.publicSourceDir; - int size = Integer.valueOf((int) new File(appInstallDir).length()); + int size = (int) new File(appInstallDir).length(); bean.setSize(size); if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) { //第三方应用 @@ -744,7 +744,6 @@ public class ApkUtils { return appList; } - public static HashSet canremove_systemapp = new HashSet() {{ //预置的可以卸载的系统应用,判断出来为第三方 this.add("com.android.quicksearchbox"); @@ -761,7 +760,5 @@ public class ApkUtils { this.add("com.uiui.os"); this.add("com.uiui.browser"); this.add("com.uiui.sn"); - }}; - } diff --git a/app/src/main/java/com/uiui/appstore/utils/FileUtils.java b/app/src/main/java/com/uiui/appstore/utils/FileUtils.java index 1b654d0..af4cea4 100644 --- a/app/src/main/java/com/uiui/appstore/utils/FileUtils.java +++ b/app/src/main/java/com/uiui/appstore/utils/FileUtils.java @@ -3,7 +3,8 @@ package com.uiui.appstore.utils; import android.content.Context; import android.util.Log; -import com.alibaba.fastjson.JSONObject; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import com.uiui.appstore.base.FilePath; import com.arialyy.aria.core.Aria; @@ -54,11 +55,14 @@ public class FileUtils { return bigInt.toString(32); } - public static void ariaDownload(Context context, String url, JSONObject jsonObject) { + 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); + JsonElement jsonElement = jsonObject.get("MD5"); + if (jsonElement!=null){ + String urlMD5 = jsonElement.getAsString(); + Log.e("ariaDownload", "urlMD5=" + urlMD5); + } + File file = new File(FilePath.FileDownloadPath + "/uiui/" + fileName); if (file.exists() && !file.isDirectory()) { String filenameMD5 = getMD5fromFileName(url); @@ -71,8 +75,8 @@ public class FileUtils { } else { Aria.download(context) .load(url) //读取下载地址 - .setFilePath(FilePath.FileDownloadPath + "/jgy/" + fileName, true) - .setExtendField(jsonObject.toJSONString()) + .setFilePath(FilePath.FileDownloadPath + "/uiui/" + fileName, true) + .setExtendField(jsonObject.toString()) .create(); //启动下载} // SaveListUtils.addDownLoadList(app_package); // } @@ -80,8 +84,8 @@ public class FileUtils { } else { Aria.download(context) .load(url) //读取下载地址 - .setFilePath(FilePath.FileDownloadPath + "/jgy/" + fileName, true) - .setExtendField(jsonObject.toJSONString()) + .setFilePath(FilePath.FileDownloadPath + "/uiui/" + fileName, true) + .setExtendField(jsonObject.toString()) .create(); //启动下载} } } diff --git a/app/src/main/java/com/uiui/appstore/utils/JGYUtils.java b/app/src/main/java/com/uiui/appstore/utils/JGYUtils.java index 88179cd..a77834e 100644 --- a/app/src/main/java/com/uiui/appstore/utils/JGYUtils.java +++ b/app/src/main/java/com/uiui/appstore/utils/JGYUtils.java @@ -33,11 +33,17 @@ public class JGYUtils { private static JGYUtils sInstance; private Context mContext; - public static int MTKPlatform = 1; - public static int ZhanruiPlatform = 2; - public static int UnknowPlatform = 0; - public static String MTKTag = "MTK"; - public static String ZhanruiTag = "展锐"; + + public static final int MTKPlatform = 1; + public static final int CubePlatform = 2; + public static final int ZhanruiPlatform = 3; + public static final int UMTK11Platform = 4; + public static final int UnknowPlatform = 0; + + public static final String MTKTag = "MTK"; + public static final String ZhanruiTag = "展锐";//酷比展睿 + public static final String NewZhanruiTag = "新展锐"; + public static final String UMTK11Tag = "UMTK11"; private JGYUtils(Context context) { @@ -285,10 +291,16 @@ public class JGYUtils { if ("MTK".equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "MTK平台"); return MTKPlatform; - } else if ("ZhanRui".equalsIgnoreCase(platform)) { + } else if ("展锐".equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "展锐平台"); + return CubePlatform; + } else if ("新展锐".equalsIgnoreCase(platform)) { + Log.i(TAG, "checkAppPlatform: " + "新展锐平台"); return ZhanruiPlatform; - } else { + }else if ("UMTK11".equalsIgnoreCase(platform)) { + Log.i(TAG, "checkAppPlatform: " + "UMTK11"); + return UMTK11Platform; + } else { Log.i(TAG, "checkAppPlatform: " + "没有数据"); return UnknowPlatform; } @@ -311,8 +323,12 @@ public class JGYUtils { String platform = BuildConfig.platform; if ("MTK".equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(MTKPlatform); - } else if ("ZhanRui".equalsIgnoreCase(platform)) { + } else if ("展锐".equalsIgnoreCase(platform)) { + getAppPlatformCallback.AppPlatform(CubePlatform); + } else if ("新展锐".equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(ZhanruiPlatform); + } else if ("UMTK11".equalsIgnoreCase(platform)) { + getAppPlatformCallback.AppPlatform(UMTK11Platform); } else { getAppPlatformCallback.AppPlatform(UnknowPlatform); } diff --git a/app/src/main/java/com/uiui/appstore/utils/Utils.java b/app/src/main/java/com/uiui/appstore/utils/Utils.java index 32e48b7..5616511 100644 --- a/app/src/main/java/com/uiui/appstore/utils/Utils.java +++ b/app/src/main/java/com/uiui/appstore/utils/Utils.java @@ -649,6 +649,7 @@ public class Utils { int width = mask.getWidth(); int height = mask.getHeight(); Bitmap bitmapScale = Bitmap.createScaledBitmap(mBitmap, width, height, true); + bitmapScale.setDensity(context.getResources().getDisplayMetrics().densityDpi); // Palette p = Palette.from(mBitmap).generate(); // Palette.Swatch vibrant = p.getVibrantSwatch();//有活力的 diff --git a/app/src/main/res/drawable-xhdpi/icon_download_task.png b/app/src/main/res/drawable-xhdpi/icon_download_task.png index 8e2d9508d362fc022461fc8568aea6302786210e..75acd9797953a8ae71486c7750e6914010f5bf74 100644 GIT binary patch literal 940 zcmV;d15^BoP)Px&W=TXrRA@u(Sv_bJK@@&(ic}UND1tv241zOn!$}Zhr51`Jkr+Y5pkg6{7Dfmu zv{sNH#==G{RMf)1sE9!uwK6s$H*X|W#ZILnWkuE}>jPElQ={v|K{DgmMYBnSoqF zZ6+|^g;unLj4^8f-~<5dR7yRy)=tHQ8Z~pq7>$U>5ph98rkVLuS|zn5p&$r`MdVQ& z+<~&zK5KMCUQv?o)$U8rHOrll=YJdk3xgUn%*^Us1GW{F?jwMNm z$OZqF(q%l6`9%}IYH3KcB_S73Yu%-kawG;40GzHX_r!=8da_v-@QVpZ!#ZiBwO*x^ zdI10jTJ_g%<}2&2)qu_Bxg7}+9f?ZT>$bq&VsGZR+4!`qQ2l!=^ zkPlXCy*VP$mn5-VvZ>lIyn|;*LxuQl?ZB`5zS=LXq<@d0KgP8zpYe2 zYrRV;H63khU#+$M?F4bQ(P?`T0J_{WQfqD1d6CAyF=oy^YmIF8xf6VG4G_^N0E~Ot zI%=(bl_p45HbD>!iimsO8ee0~JRTF+4*(y$!K=)CJu5J2{1VX>0J!EQ`LL^MOkfiL z{E7!fR3do0&(J5-6*=L^J^ampuQI%sf;@fQZ}) z>YnNQ*C}SMw98omY~)E#4P8SM=)umFYutX54rY|fke4Cw}{o9Ih%LH0+)`>Yeflg%IkNFRdvR*(|=@;Gr O0000 literal 2820 zcmaJ@dpy&7A0LLOcyh_5#abMl!nVTc`K~W}16v9OOnj0hcW6aDkC=2N42PXE$ zp@m||c>B-3#5*i3oX2Bh5Qw_rUnXSEJhe}D&6K_XNu>V|WiY;? zxjZuPPrUzAm`jOg0|+v}WyNr);>LyU-E_sq;5a}qkHw*|SW#c9=oZf6vAE$ZHWcS> z4%I(GXVO@4T!T+|5(z_Oa(Tf_DnP_zVPXY1ole8x&24e}?d|PMkY@HsBmsxUqmXzc z!GeGy;BD=L|7!G?Bk}ZXnqS9Oy!kr#08>2e9PwCpzPJkpfn@naye)xq`AlKJZv0?QGX3nCy z)8~qY+;F%Q;t`QZM2_F5I4kLg_$cWo?*~37I|r}qJzNf;B#R@sav4H{;as(D#bU#t;NR@6w)J;?8ZVKC6wEi z%4kW1f)MK(GQtc+@TCWHFBX#&lMI8nGV-Ehv+^TyBini8)$(LLDMgU01S{-fqQ3u( zOxvKQO@C4_lDV~a2$G$?yC`An`bqLwjrwY!L<#t>iiwe5=y^L4%_x~U*Q8NO)D>Lc z@kO7GlEv=Ex@|v7z0B)zx=+t}l~Ov@aAYb+-FB6brIh z1TiSJg*wc%m-C$kAaNQvQp{_7kv-jG8D?GZ-39SUGoHq#m+LmaPwOBmxl1jBM$50P7Z_qfjd1Fdt$!>XKDUdYAgK(=Dgql3{o4^s=;?aF_*>gsWsGb!B_9bj zs=y>ca6L@qtfRUOw*WaA|Hou1HH_p(Zr-=yzhL@n*GgA^ego~a3*=9Xa`yd*F10mB zAo6WJ`wmI@?qTfh(V08`uQdAeQO>?<`sq)erK`%HS($HK14m~qMh$;BjYuqxw^7|v z@HX*DA{;)b+j%Q5W16CW4!F<>yBqLvbk=<+88Wem7D?=6N65eBr%&tn4a+Sh!e=!E z&r2cu6dQhc1nHVZuO=;5 zM!4x@k5mn8S$fv7@d(-5q-&dNJ{kJqDRa-y{dm?ytUNTjn|OO8igfgBV>Aww8R=qE zViH3O>03EFaI$2}c*^8Znv-HoGtqLmjq_y2zrh$A^s7G37 zVZDz=N`T_|d*y^xA{+=iB`^XnSR zf=<(%y4fm4lP#BztVkVh?Ok|Bq8U8xD0uK}!`r_YWS?cccFYVfA2^KzE`)l~*~ z>X(Rpjj`c^6n1syDDDIa(k$%4$D-yvCQa2Q4_JCWb~)3a@Z13N^QA$R`G-?pIz3@FJH9HLSLvs2*j)hO3X2SCaOY za{J4toD*sd&o1_24_&6|?E_|mtajb^~LRNmK+ggnEP?pm|V7$ z3;oi=<+CbRX1_aSigpe=Q~t<2ml1ML;jdFxO=${CL3yjwoG#In{(sNCuq9#)LF4$+V5#PHP*ND^9dDE zN70fT?OpeqltMBApL9HM!g*Q5elY&p={|#p>bIO(1*{Vrh{xilLC^J^2-?w1>&ZU% z#*NlKw|lCoC#x_@(peR6D0!Sz{OV)H_Xl4_b)lC6C1gM%=%j3`p0eBKy_86B!PnRY Geg7XKw!5hS diff --git a/app/src/main/res/drawable-xhdpi/icon_my_task.png b/app/src/main/res/drawable-xhdpi/icon_my_task.png index b41d694c03ef6a7e0991741030f72adeb450fb30..d1de0f7f0ce314d6a98cac0308d9de1bd58c786c 100644 GIT binary patch literal 1006 zcmVPx&s7XXYRA@u(nU9f7K@i5jivSTI0z`la5CI}U1c(3;AOb{y2oM1>AOh;ArmuSY z^}L?ht-Y;NJ5^hCx9?4Ne_!|XpV5imZk}gVmFX@$}Por{2 zJaApog%yFnC4C)L*xtj~cg^r@>l;Z=B>k%7_5fUw^i&cIjjmCp82?cc#Mt`T{MgvvNfbzo2}ut&3(rL_w5!6XWLJ3y2f(4b z-$|`Aq2$v$y%PWbTl)?ne~8gX1_9K}^6}5Ujr6{604Vfcm<17y-(bJ;z@@5@3N-pc z=Ig+=AfoXb*{2sm&srC1N;ir|;dj!Ub+56Nm<2IpeC7eqBG1X=eAZeD_Mnh>XHjkW zF6*I2!fDv}3;^Fn0W$|~B*r5MG77Ox&qT)ZO<)=}-k@G_p%FunA22E)wB8tl$Ep=U zWbc>8_dMW*5f(I5Yr_qpLQg+D$2J8J^r(Y$k!^a6>{{L{rmN?WgV#7SEQkQua2tPU z02RRU`5FLN;ZRi}1Y3NF*@`(ksL1w1eP$>jX>z+jdH}eQpeD>N_B`)w;yh6+EL=uq z1BAMgUKC^id_fvj;@?|LO|3@QV6%-(62*I^- z=9!m~TU~}BllSbRV5pVw`FXZ;?6tha`jh=K&b@4Pw^hRbKG>4-Q}(4;%qhF80r}n*-0_(F3t*Jc}%J^ne?450Zs;tpk2; zC;|Ap%*D&aX{Pk^yBEuseczr8O<6$?SN7J1l$F>UK?&zVw(42Xhmja>lUoFjEE`X4 z2ClLjvgohurXy`bvThWEt${*`_4_@Au;W|gOpzzXKNnR@ z`RCu7H?r>4H+wTOxu#)ndL_9wk>NT%qrVfQpt|>jRg>wxoB@Iih+LhK|Ld7}#?1$N c_uPBnFHfi?KsmR9i~s-t07*qoM6N<$g6uZeo&W#< literal 2436 zcmaJ@dpy&7AD_9EB6-L)%?LT!_8S|9+-|x@+`}utS_(?Vd`Dkhw zX`oOjO+Q~SL@`q4-$iPQ?_;^YwPG+tydw}AyaN$3_z=p21xG^|KMo@X3V|4`q=cK0 z3ks!-Wz!>&h`;~}6XxI;^BA0n!&9(PC>J*okHL(C5KJ@_!{)kT$K{P!44dVO4JQQ> z0(o9gEZbMihiKv;I#V3SbYfxM)?r*k6omi>LKqkkC!Q;yh+MH>bSaAY{5Bqo`2s=W zT(N(diU{0*@q+mfhJ>@TWfA}YLnh+@dlH!pti=!s01;16JY-wIo{!d{6J&6b5Lm&a1$Y&}Fx5Ios6p!M?hZqRVr^9gkLKZi~!U!ygg?Sh+8X039 z&gQaUplcvDR#Ma>H1|K#}uHl59KwlAufw^Q_<5ZfdqY zfVOhwO6r!x#6-70eqQ$T(vpD3KPl}-Uq>H4J{_hMx%7~VnsQ3&{-&V8^@BaFt*y3O zL-Q_y9yRK_$CSBhX*XV(EZ(i@qIt*Z9-vmcq}Ieb$6AP*UKD|DuEa|A4KMa>)CjQu z#E~G5`7ud(;-$5!)<4u#Ii&9LnC>GKu+8aX6Z@IC;C|$yKif5cs zyYi3T{X(ry?dQ`DAssemQSO*pDNnaurL|)A6Y5;-B@3BBqusDSx@Y_d>y(O1R(j`co!8}K4@Q#Ax<7o-Skt1; zlgoCSitdyGN2-qD(@8MrWFzIfoCM<~`KvUsdLDBt^|_{QNH`M3vBW ziQZ0=ZC6IcW;Ktz8geStcP%Gi*~R92dn^Vt?(C{KrUhO$3LVO~tkB1ZL!6W8nUB|Z z#5c6b2<&1#o4JM&*|m!IO(l}auosV9?$61$z0J22yO++2tK~V91$mY-T4}nddUoy6 zhez$Z@aV%{r8)k;85^DL^DB(aPrL^`4|+=Y1D%!T#=_JG-20!!?4}&zPC!4QVg-_Hsp0~j`Uv*E*3XaRq z*pu7RaPYZom2#H+PU79;7xd1=mn4Lb*73)4kMqv_`?4byW*59K?>3>03XSzk*AZ?8 z=W1+~j7^p34rh`Ep3!i{Th~67i1n+%&zjOMx9Br)LEEN7Vmn|qbj471%*3Wc1}y`= zfS)7`CqU#kxp5MZ)^9AHxXj(O4`-jEw_}RcP-WaW9^2KV~vLz8_kIwR+F10KC zUAslq;v&1Ps^8*(mTH@+)v~5B84$SzccagwuTkYV_tKNvl*=uK4FRDRA77t5WL0DK zY@~GCqP6*TR4l2fFO^TqWXTW2CIW8wxK1CncX6vTtge-_dy=*%cYL2+8IM1e$qo$54#)rL)DcX9h^AaT-IwsNhY0qHKu_0dFA>! z{MII&uK&L4Gc4;){-m+yWsChWUCHRsV1tXpx!@v`_P4^K`&T6Th096OselohNpg3!Rn4YV4#<^Af6bj#-y~_>sp{%A;bg;WpKAuQoQ)mLPe%sS z*bJVSKvGV904B8SHW^=aXzRIu;p8i61w3?7?$=LsnMul>yJ3_+&=UXd&Z2{4X?kNf z2&1m~p7_}MsFi+_SAKCx*H6tW?-qRD|NA!-)oB^)Cl|#A>s(Dr9 ccfm?(s2ZdC(>CB9+5CTzpLY;g?HRT2PsYIb-v9sr diff --git a/app/src/main/res/drawable-xhdpi/icon_update_task.png b/app/src/main/res/drawable-xhdpi/icon_update_task.png index 73d46e364939af9bc426e2757abc22b5691c02d8..41a3074c9a9ee6674da0fa41b6e6847f6de97fcf 100644 GIT binary patch literal 1438 zcmV;P1!4M$P)Px)SV=@dRA@uhSzV}9RTTc#+!-yePo|H_HLNak_BnVNDoHGbeu#ci5=#paGZLXN zsGtY6LQ<*7=vPYY7rjuH5!6FkSW!8M?seuidP%AD!P|qBT<)E5&WbH(hI6NxIcH|h zT$}}mf!TY1>-+ZEYoE2(CUm(`m-9!*1fRFJ4-fwnCd#s`bt00@<#IpQ>f4q8rPN&j z)&jUYj7XjK*F4YLo6F@6)oNEteF$KM-?o^U4_5bUNk9z5t9cv%u#1^L2sS9C%>Rr0 z|28x8rnUrx5FZ8b1Arfi=tQYh8aBU)L_z>uRenTd0TJCIBGpR_BJzssx*N(QV-;ZA z_WdHVx5lg958$1tQ>T8L&1Q{=Q0wdKyKMUO=|;p-B3e~7;DCs%cU?CZn}9mxFA`_w zFGCqO=#WmQR}s-hBI*ltJ4Zz8MPyCeOQ;rkBHF37Ho+T<_4oJpC6meL0j#V7G(lUA zflbW3xv3baLw>c^dRHvWt3Yhqep*Cctb^U00LO8z^*qmPZ!^n)B65T4y1&Fp-k<&8 z@-e~uHW6J@<)=9TN~w1NtS*BP(VbfBui_+c+xA*RHX>$p0gmI`<9Xia0rF33tzVAl zC~~)|T_$W?bOA~!vvd~th~F^t?P2Jxv|E<7oQPfrFr(3UB67#a#}^$xe*EvyAhs;) zDI(e$nEjiz*59{6a5BdHFO^VAxd76>^G}(1>0}UT)yD(@>2%skBoZ8${S{j4k6Q(w zjByhLD5V|)@P_aB;3=idDe$_B zONMBf)_SmO1lYEHuZZj`6HX)&R~|cd?60m7pp^Oqz;d7PPt0uUt`)nacOl!hZxWI3 z0({pnvpK6r7oe0X*JWxh?^G(~9yxNvRGnitrPS8|Zu5Z;G4sM|Cw1R|Wm#!+7LCBl zkl)J8FGc7Zxr=Sv8$_gnDIyQLu4|Ul1gk4RDHYs%!yF%E=EY&1qPF`*~p69&>U~T~KS!Ui+55J{1Kt#`Itt+LMILQ0uoEHG30(eg_^Q(>U zqY4OCiOYEVL}W|5r?z^RCL*%db={p|lM^+Fjes2h%nVf$DFaSKUzkg~{{H?wgM)*m zFo)&#Mz=jgv{GyRQ53Am0?aNmFfcHySS*@4{-ZU(e=|ae=!}S*CZa#4OqpVy!szJe zj8ds|g`dxxJAhjO%&x`|5fiA}UDq{NRgtVI0fE^wB%T8>Cz6-&PI&;^nArqyQ`V9I z;~|sD%q$cNOGIP|fR>BDM6_*ue0+PY!fg~KjRcq!!W`p_)x6>?JMc>~4*)QaYT$T8 zL=FSE_*}Sf;cz~mKNE#$)7z*SVB2=aT#p9x?=WYXOeR$-m3l>_w@@fdBck3!A~CI0 sDvb;c4V?%Z-)#FOosC8j)Aa)W15WKNPo88z(f|Me07*qoM6N<$g4oNerT_o{ literal 2022 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 diff --git a/app/src/main/res/layout-land/activity_details.xml b/app/src/main/res/layout-land/activity_details.xml index 36e9065..2b8dd09 100644 --- a/app/src/main/res/layout-land/activity_details.xml +++ b/app/src/main/res/layout-land/activity_details.xml @@ -1,14 +1,14 @@ - @@ -27,17 +27,15 @@ android:id="@+id/detail_tv_title" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginLeft="10dp" + android:layout_marginStart="10dp" android:gravity="center_vertical" android:singleLine="true" android:text="应用详情" android:textColor="@color/default_text_color" android:textSize="@dimen/activity_font_size" android:textStyle="bold" /> - - - - + android:textSize="@dimen/sp_21" + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:layout_marginTop="@dimen/dp_4" + android:isIndicator="true" + android:rating="3" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/detail_tv_name" /> - + android:layout_marginTop="@dimen/dp_4" + android:text="大小" + app:layout_constraintTop_toBottomOf="@+id/detail_rating_bar" /> + + + + android:visibility="visible"> @@ -133,9 +144,7 @@ android:text="应用介绍" android:textSize="@dimen/sp_16" android:textStyle="bold" - android:visibility="gone"> - - + android:visibility="gone" /> - - + android:layout_marginRight="@dimen/dp_15" /> - - + android:visibility="gone" /> - - + android:layout_marginRight="@dimen/dp_15" /> - - + android:visibility="gone" /> - - - -