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 3d1afef..4b6ed7d 100644
Binary files a/app/src/main/res/drawable/ic_kind_detail.png and b/app/src/main/res/drawable/ic_kind_detail.png differ
diff --git a/app/src/main/res/layout/fragment_manage.xml b/app/src/main/res/layout/fragment_manage.xml
index f522508..ec5c9b6 100644
--- a/app/src/main/res/layout/fragment_manage.xml
+++ b/app/src/main/res/layout/fragment_manage.xml
@@ -28,34 +28,36 @@
android:background="@drawable/ic_kind_detail" />
+
+
+
+ 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" />
+
-
+
-
+ />
-
-
-
-
+ android:stateListAnimator="@null"
+ android:text="删除"
+ android:visibility="visible" />
#c1bcbc
#d9d9d9
#d4d0d0
-
+ #55b68a