From 2653b91e702e0543fee9d1407a1f943d9835a339 Mon Sep 17 00:00:00 2001 From: Administrator <981964879@qq.com> Date: Fri, 6 Dec 2019 09:39:06 +0800 Subject: [PATCH] =?UTF-8?q?update:2019.12.03=20fix:=20add:=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=9C=A8fragment=E4=B8=AD=E6=8E=A5=E6=94=B6=E5=B9=BF?= =?UTF-8?q?=E6=92=AD=E6=B6=88=E6=81=AF=E6=9B=B4=E6=96=B0=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 +- .../java/com/appstore/uiui/MyApplication.java | 15 ++++-- .../activity/DownloadManagerActivity.java | 29 +++++++++- .../uiui/activity/LocalManagerActivity.java | 3 ++ .../com/appstore/uiui/adapter/AppAdapter.java | 21 ++++++-- .../uiui/adapter/DownloadManagerAdapter.java | 8 ++- .../uiui/adapter/LocalAppAdapter.java | 2 - .../uiui/adapter/UpdateAppAdapter.java | 4 +- .../uiui/fragment/FeaturedFragment.java | 50 +++++++++++++++++- .../uiui/fragment/ManageFragment.java | 2 +- .../uiui/receiver/AppManagerReceiver.java | 13 ++++- app/src/main/res/drawable/btn_style_none.xml | 36 +++++++++++++ app/src/main/res/drawable/btn_style_open.xml | 36 +++++++++++++ app/src/main/res/drawable/ic_kind_detail.png | Bin 291 -> 1838 bytes app/src/main/res/layout/fragment_manage.xml | 28 +++++----- app/src/main/res/layout/item_app.xml | 32 ++++++----- app/src/main/res/layout/item_kind.xml | 2 +- app/src/main/res/layout/item_local_app.xml | 23 +++----- app/src/main/res/values/colors.xml | 2 +- 19 files changed, 245 insertions(+), 65 deletions(-) create mode 100644 app/src/main/res/drawable/btn_style_none.xml create mode 100644 app/src/main/res/drawable/btn_style_open.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2b147fb..d213d62 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,7 +47,9 @@ - + + + diff --git a/app/src/main/java/com/appstore/uiui/MyApplication.java b/app/src/main/java/com/appstore/uiui/MyApplication.java index db1ea2c..feb48e8 100644 --- a/app/src/main/java/com/appstore/uiui/MyApplication.java +++ b/app/src/main/java/com/appstore/uiui/MyApplication.java @@ -12,8 +12,10 @@ import android.util.Log; import androidx.annotation.NonNull; import com.appstore.uiui.jpush.Logger; +import com.appstore.uiui.network.OKGOPost; 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; @@ -329,9 +331,9 @@ public class MyApplication extends Application { PackageManager pm = getPackageManager(); //后台为0可能传过来null if (is_lock == 1) { - pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); - } else { pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + } else { + pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); } } catch (JSONException e) { e.printStackTrace(); @@ -379,12 +381,17 @@ public class MyApplication extends Application { } 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(getAppContext().getPackageName())) { - ApkUtils.deleteApkInSilence(packageName); + if (!packageName.equals("") && !packageName.equals(getApplicationContext().getPackageName())) { + if (!ApkUtils.isAvailable(getApplicationContext(), packageName)) { + OKGOPost.setAppuninstallInfo(sn_id, packageName); + } else { + ApkUtils.deleteApkInSilence(packageName); + } } } catch (JSONException e) { e.printStackTrace(); 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 8436dc6..0702afb 100644 --- a/app/src/main/java/com/appstore/uiui/activity/DownloadManagerActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/DownloadManagerActivity.java @@ -1,18 +1,28 @@ package com.appstore.uiui.activity; +import android.os.Handler; +import android.os.Message; import android.view.View; import android.widget.Adapter; +import androidx.annotation.NonNull; 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 { private RecyclerView recyclerView; private DownloadManagerAdapter adapter; @@ -31,8 +41,8 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O @Override protected void initData() { okDownload = OkDownload.getInstance(); - adapter = new DownloadManagerAdapter(this); - adapter.updateData(DownloadManagerAdapter.TYPE_ALL); + adapter = new DownloadManagerAdapter(this, handler); + adapter.updateData(DownloadManagerAdapter.TYPE_ING); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); okDownload.addOnAllTaskEndListener(this); @@ -47,6 +57,8 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O @Override public void onAllTaskEnd() { ToastUtil.show("所有任务已完成"); + adapter.notifyDataSetChanged(); + } @Override @@ -65,4 +77,17 @@ public class DownloadManagerActivity extends BaseActivity implements XExecutor.O public void finish(View view) { this.finish(); } + + private Handler handler = new Handler() { + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + if (msg.what == 100) { + adapter.updateData(DownloadManagerAdapter.TYPE_ING); + adapter.notifyDataSetChanged(); + } + } + }; + + } diff --git a/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java b/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java index 5fb58cb..7daa4c7 100644 --- a/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java @@ -82,6 +82,9 @@ public class LocalManagerActivity extends BaseActivity implements RefreshManager LocalApp bean = new LocalApp(); bean.setAppName(resolveInfoList.get(i).loadLabel(getApplicationContext().getPackageManager()).toString()); String packageName = resolveInfoList.get(i).activityInfo.packageName; + if (packageName.equals(getApplicationContext().getPackageName())||packageName.equals("com.android.uiuios")){ + continue; + } bean.setPackageName(packageName); Drawable icon = resolveInfoList.get(i).loadIcon(getApplicationContext().getPackageManager()); bean.setIcon(icon); 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 12f27b9..bf5c0f0 100644 --- a/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java +++ b/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java @@ -1,7 +1,9 @@ package com.appstore.uiui.adapter; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.telecom.Call; import android.view.LayoutInflater; import android.view.View; @@ -18,7 +20,9 @@ import com.appstore.uiui.R; import com.appstore.uiui.activity.DetailsActivity; import com.appstore.uiui.bean.AppInfo; import com.appstore.uiui.listener.LogDownloadListener; +import com.appstore.uiui.network.OKGOPost; import com.appstore.uiui.utils.ApkUtils; +import com.appstore.uiui.utils.LogUtils; import com.appstore.uiui.utils.ToastUtil; import com.bumptech.glide.Glide; import com.lzy.okgo.OkGo; @@ -45,6 +49,7 @@ public class AppAdapter extends RecyclerView.Adapter { private boolean isNotLoadBitmap = false; + //order代表是否显示所在的位置,1.2.3. public AppAdapter(List appInfoList, boolean isShowOrder, Context context) { this.mContext = context; @@ -60,6 +65,7 @@ public class AppAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(Holder holder, final int position) { + final AppInfo appInfo = mAppInfoList.get(position); final DownloadTask downloadTask = OkDownload.getInstance().getTask(appInfo.getApp_url()); holder.setTag(appInfo.getApp_url()); @@ -81,6 +87,7 @@ public class AppAdapter extends RecyclerView.Adapter { } else { holder.tvName.setText(appInfo.getApp_name()); } + holder.tvSize.setText(appInfo.getApp_size() + "M"); holder.ratingBar.setRating((float) appInfo.getApp_score()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override @@ -95,11 +102,17 @@ public class AppAdapter extends RecyclerView.Adapter { if (appInfo.isInstall()) { if (appInfo.isUpdate()) { holder.btnDownLoad.setText("更新"); + holder.btnDownLoad.setTextColor(mContext.getColor(R.color.green)); + holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_style_none)); } else { holder.btnDownLoad.setText("打开"); + holder.btnDownLoad.setTextColor(mContext.getColor(R.color.black)); + holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_style_open)); } } else { holder.btnDownLoad.setText("下载"); + holder.btnDownLoad.setTextColor(mContext.getColor(R.color.green)); + holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_style_none)); if (downloadTask != null) { holder.refresh(downloadTask.progress); } @@ -141,11 +154,10 @@ public class AppAdapter extends RecyclerView.Adapter { public class Holder extends RecyclerView.ViewHolder { ImageView ivIcon; - TextView tvCompany, tvName; + TextView tvCompany, tvName, tvSize; Button btnDownLoad; RatingBar ratingBar; // TextView tvInstalled; - CardView cardView; private DownloadTask task; private String tag; @@ -155,10 +167,10 @@ public class AppAdapter extends RecyclerView.Adapter { ivIcon = itemView.findViewById(R.id.app_iv_icon); tvCompany = itemView.findViewById(R.id.app_tv_company); tvName = itemView.findViewById(R.id.app_tv_name); + 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); - cardView = itemView.findViewById(R.id.app_card_view); } public void bind() { @@ -180,7 +192,7 @@ public class AppAdapter extends RecyclerView.Adapter { btnDownLoad.setText("等待"); break; case Progress.FINISH: - btnDownLoad.setText("完成"); + btnDownLoad.setText("安装中"); break; case Progress.LOADING: btnDownLoad.setText((int) (progress.fraction * 100) + "%"); @@ -202,6 +214,7 @@ public class AppAdapter extends RecyclerView.Adapter { } } + public void setNotLoadBitmap(boolean isNotLoadBitmap) { this.isNotLoadBitmap = isNotLoadBitmap; notifyDataSetChanged(); 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 c6c799a..691716e 100644 --- a/app/src/main/java/com/appstore/uiui/adapter/DownloadManagerAdapter.java +++ b/app/src/main/java/com/appstore/uiui/adapter/DownloadManagerAdapter.java @@ -1,6 +1,7 @@ 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; @@ -40,10 +41,12 @@ public class DownloadManagerAdapter extends RecyclerView.Adapter" + appInfo.getNewVersionName()); holder.btnDownLoad.setText("更新"); + holder.btnDownLoad.setTextColor(context.getColor(R.color.green)); + holder.btnDownLoad.setBackground(context.getDrawable(R.drawable.btn_style_none)); holder.btnDownLoad.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -96,7 +98,6 @@ public class UpdateAppAdapter extends RecyclerView.Adapter appInfoList;// - private List newAppInfoList; + private List newAppInfoList=new ArrayList<>(); private AppAdapter adapter; private boolean isNotLoadBitmap; + private installReceiver myReceiver; @Override public int getLayoutId() { return R.layout.fragment_featured; } + @Override + public void onStop() { + super.onStop(); + if (myReceiver != null) { + try { + getActivity().getApplication().unregisterReceiver(myReceiver); + } catch (Exception e) { + LogUtils.e("onStop", e.getMessage()); + } + } + } + + @Override + public void onStart() { + super.onStart(); + adapter.setData(checkUpdateOrInstalled(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); + getActivity().getApplication().registerReceiver(myReceiver, filter); + } + } + @Override public void initViews(View view) { mRvResult = view.findViewById(R.id.featured_rv_result); @@ -62,7 +95,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager isNotLoadBitmap = false; - newAppInfoList = new ArrayList<>(); + adapter = new AppAdapter(newAppInfoList, false, getContext()); adapter.setHasStableIds(true); mRvResult.setAdapter(adapter); @@ -126,4 +159,17 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager 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)); + adapter.notifyDataSetChanged(); + } + + } + } + } 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 0663961..c6473dd 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java @@ -161,7 +161,7 @@ public class ManageFragment extends LazyLoadFragment { applist = (List) msg.obj; updateDta(applist); updateNum = updateAppInfoList.size(); - manage_tv_updateNum.setText(updateNum + "个应用可以升级"); + manage_tv_updateNum.setText(updateNum + ""); adapter.notifyDataSetChanged(); break; } 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 5ea817d..26d6aa6 100644 --- a/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java +++ b/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java @@ -25,12 +25,19 @@ public class AppManagerReceiver extends BroadcastReceiver { action = intent.getAction(); //接收安装广播 if (action.equals(Intent.ACTION_PACKAGE_ADDED) || action.equals(Intent.ACTION_PACKAGE_REPLACED)) { + if (action.equals(Intent.ACTION_PACKAGE_ADDED)){ + Intent intents = new Intent("com.appstore.uiui.PACKAGE_ADDED"); + context.sendBroadcast(intents); + }else { + Intent intents = new Intent("com.appstore.uiui.PACKAGE_REPLACED"); + context.sendBroadcast(intents); + } String packageName = intent.getDataString().replace("package:", ""); String name = ApkUtils.getApplicationName(context, packageName); ToastUtil.show(name + ":安装成功"); LogUtils.e(TAG, "安装了:" + packageName + "包名的程序"); // ToastTool.show("安装成功"); - if (!packageName.equals(context.getPackageName())) { + if (!packageName.equals(context.getPackageName())&&!packageName.equals("com.android.uiuios")) { if (member_id == -1 || sn_id.equals("-1")) { OKGOPost.getUserInfo(context); } else { @@ -43,7 +50,9 @@ public class AppManagerReceiver extends BroadcastReceiver { if (action.equals(Intent.ACTION_PACKAGE_REMOVED)) { String packageName = intent.getDataString().replace("package:", ""); LogUtils.e(TAG, "卸载了:" + packageName + "包名的程序"); - if (!packageName.equals(context.getPackageName())) { + Intent intents = new Intent("com.appstore.uiui.PACKAGE_REMOVED"); + context.sendBroadcast(intents); + if (!packageName.equals(context.getPackageName())&&!packageName.equals("com.android.uiuios")) { if (member_id == -1 || sn_id.equals("-1")) { OKGOPost.getUserInfo(context); } else { diff --git a/app/src/main/res/drawable/btn_style_none.xml b/app/src/main/res/drawable/btn_style_none.xml new file mode 100644 index 0000000..cdfdf43 --- /dev/null +++ b/app/src/main/res/drawable/btn_style_none.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_style_open.xml b/app/src/main/res/drawable/btn_style_open.xml new file mode 100644 index 0000000..4c32f27 --- /dev/null +++ b/app/src/main/res/drawable/btn_style_open.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_kind_detail.png b/app/src/main/res/drawable/ic_kind_detail.png index 3d1afef29d5a168c6732ed3e9beb2f80f6d8f397..4b6ed7d5881eca2789b570980c8dd78ab112e951 100644 GIT binary patch literal 1838 zcmaJ?Yfuwc6kY{ML=+Gd6@?`T^#MsX5FRN}^H?C#AdifqSanI35KXc%yPDu@3N;{# zJjO>9p&(X7)F?^?Yqc6`Ma!UrM6nCW7}_nbN3ch0%z+u5AB z*r>6NQyc*R7%PevCXhSdwx|x|`@RHtLT)4QgeX2>YMT0#H0h!zESGAsoJMJhy&CZLEcef1SI0s!oM6p|z& zN&FQ@imB*`ErzaFX-G5xM9kG|5a}wE08>!8Ld~UhpZ%EzDr8*RBDR<*)(FrvMf5r? znz$}jB3-vi8ZM*FodZVbIV6D!B@j@rQmS!|o=fZJ<&bBan?VEnLx@#e+Q*`j#Brbi z)1n}o&JL6^pQaK62$bnp> z#igYYgoeXl=yW=|E{Kk4uTzG6+#zs#RzR1*QgV zj7SQ$hTzi3NH;Js7f^yjS~szfAxNr7?-4L zP(}iZV{5cha&W1>wp1F9K#L*-rj=lra_|=8(l7$U(=ZJv5P&llDbzAdhtKQ}7mGO} zHBKOEDJl|jX(Rz%p^$NcBUvnFC_fSkVZ#sv^LRoiG(42g=CMM8d9W~e5G%x_YgDM3 z7{tnkuma|=Sep`58ZxsG)hgDavPdna0{c7WD2A^^I4s`)RyJ%ce0W$agDi$&o9icY z9(0l7u^oq0OBzGEN7ba*wWO+hp46WtKbF-ZAy1-T_G0hy=*0L*7j(4_r&~?UG3!rU zZ^(X{+?(Reb9r%zoEKd1V9n;;>d2(-3B0C-4kq_wCz|J3qmo{aZ+5EksP3quc;~Ks zBWE40KGt3Qa_qvEwyraj*L^G6yRBXI7Vp0|Jicbpo++-6Y<;c|Opmtb(_F@96i_z{ z!RaG?T&X$pK6O!p2t9TtmaG<9Q9#hq7{n`^CoA8P83_*eYodRTJR**L8S&v=sO zjN?1LwX^elD~2Ih2*a1cmUe8*J+)q;n7QfP@oU*g8NnQ|f}r?9&1g`D51amW1%w5hi}bL>yu4zOOnmE#zZ zbi<+6(o(EUOM7GRiz!^IA0sfAUXgY2o=lw3RAYLUy~OE0<kAjh8H4?GiR zAsa5Y69FC02JhvVaUd+anme5pHcHCuCS0cY@}OJ%iSevuI+y$ Mf@6gy{))_h0e{lS@&Et; literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm3!3-pqrme35QuYBpA+G=b{|7S321i-%$pJNs zmIV0)GjQ4X*zq!0`nr4aS#Y}WxN^H$+nRLBCj%AKdAc};Xq<1oe4DR9frBk!t%+6A zwcqyHo4ZAhH@?nq{@7gX^D}Xd)0(4_=FA6#c(ynN&h9H)(B*pEQ?z^0@-FweLIR;e zN?tB&Cj~AR37OhvP^+=9sc!L>-F3<97D!~zoNt(PGJ}0ivrs|$lh3(5Mf + + + + android:text="0" + android:textSize="10sp" + /> - - - diff --git a/app/src/main/res/layout/item_app.xml b/app/src/main/res/layout/item_app.xml index 4edd9ef..b783c70 100644 --- a/app/src/main/res/layout/item_app.xml +++ b/app/src/main/res/layout/item_app.xml @@ -27,7 +27,7 @@ @@ -52,6 +52,15 @@ android:textSize="12sp" /> + - +