diff --git a/app/build.gradle b/app/build.gradle
index edc8f93..56adf49 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -403,8 +403,8 @@ dependencies {
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.3' //1.0.5及以前版本的老用户升级需谨慎,API改动过大
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.3' //没有使用特殊Header,可以不加这行
//glide
- implementation 'com.github.bumptech.glide:glide:4.14.2'
- annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2'
+ implementation 'com.github.bumptech.glide:glide:4.15.1'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'
//磁盘缓存
implementation 'com.jakewharton:disklrucache:2.0.2'
//aria
diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml
index fc3ad33..bbd6550 100644
--- a/app/src/debug/AndroidManifest.xml
+++ b/app/src/debug/AndroidManifest.xml
@@ -72,7 +72,7 @@
android:name="com.uiuipad.appstore.activity.KindDetailActivity"
android:screenOrientation="behind" />
-
+
+
+
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d116918..dad8560 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -72,7 +72,7 @@
android:name="com.uiuipad.appstore.activity.KindDetailActivity"
android:screenOrientation="behind" />
+
+
+
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/AboutActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/AboutActivity.java
index 668e7de..a749cf1 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/AboutActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/AboutActivity.java
@@ -15,13 +15,16 @@ public class AboutActivity extends BaseActivity {
private TextView tv_version, tv_copyright;
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_about;
}
@Override
- protected void initView() {
+ public void initView() {
iv_exit = findViewById(R.id.iv_exit);
iv_exit.setOnClickListener(new View.OnClickListener() {
@Override
@@ -47,12 +50,8 @@ public class AboutActivity extends BaseActivity {
}
@Override
- protected void initData() {
+ public void initData() {
}
- @Override
- protected void setListener() {
-
- }
}
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/ClassAppActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/ClassAppActivity.java
index 44c2f0c..3cd0286 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/ClassAppActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/ClassAppActivity.java
@@ -10,11 +10,14 @@ import android.widget.TextView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuipad.appstore.R;
import com.uiuipad.appstore.adapter.AppAdapter;
import com.uiuipad.appstore.base.BaseActivity;
+import com.uiuipad.appstore.bean.AdminAppInfo;
import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.base.BaseResponse;
import com.uiuipad.appstore.common.CommonConfig;
import com.uiuipad.appstore.network.NetInterfaceManager;
import com.uiuipad.appstore.utils.ToastUtil;
@@ -23,11 +26,9 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
-import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.schedulers.Schedulers;
public class ClassAppActivity extends BaseActivity {
@@ -43,18 +44,21 @@ public class ClassAppActivity extends BaseActivity {
private AppAdapter mAppAdapter;
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_class_app;
}
@Override
- protected void initView() {
+ public void initView() {
ButterKnife.bind(this);
}
@Override
- protected void initData() {
+ public void initData() {
Intent intent = getIntent();
if (intent == null) {
return;
@@ -77,49 +81,42 @@ public class ClassAppActivity extends BaseActivity {
getAppByClass(classId);
}
- @Override
- protected void setListener() {
-
- }
-
public void finish(View view) {
finish();
}
public void getAppByClass(int classId) {
- NetInterfaceManager.getInstance().getAdminAppByClassObservable(classId)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>>() {
+ NetInterfaceManager.getInstance().getAdminClassAppObservable(classId)
+ .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
+ .subscribe(new Observer>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getAppByClass", "onSubscribe: ");
}
@Override
- public void onNext(@NonNull BaseResponse> listBaseResponse) {
- Log.e("getAppByClass", "onNext: " + listBaseResponse);
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getAppByClass", "onSubscribe: ");
setAllAppdata(listBaseResponse);
}
@Override
public void onError(@NonNull Throwable e) {
- Log.e("getAppByClass", "onError: " + e.getMessage());
- setAllAppError();
- onComplete();
+ Log.e("getAppByClass", "onSubscribe: ");
}
@Override
public void onComplete() {
- Log.e("getAppByClass", "onComplete: ");
+ Log.e("getAppByClass", "onSubscribe: ");
}
});
+
}
- private void setAllAppdata(BaseResponse> listBaseResponse) {
+ private void setAllAppdata(BaseResponse> listBaseResponse) {
int code = listBaseResponse.code;
if (code == 200) {
- List infos = listBaseResponse.data;
+ List infos = listBaseResponse.data;
mRecyclerView.setVisibility(View.VISIBLE);
iv_nodata.setVisibility(View.GONE);
mAppAdapter.setData(infos);
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/CopyrightActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/CopyrightActivity.java
index f3002ef..2024879 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/CopyrightActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/CopyrightActivity.java
@@ -5,25 +5,21 @@ import com.uiuipad.appstore.base.BaseActivity;
public class CopyrightActivity extends BaseActivity {
-
-
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_copyright;
}
@Override
- protected void initView() {
+ public void initView() {
}
@Override
- protected void initData() {
-
- }
-
- @Override
- protected void setListener() {
+ public void initData() {
}
}
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/DownloadManagerActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/DownloadManagerActivity.java
index 9b2eb11..2f016bf 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/DownloadManagerActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/DownloadManagerActivity.java
@@ -16,23 +16,25 @@ import com.uiuipad.appstore.base.BaseActivity;
public class DownloadManagerActivity extends BaseActivity /*implements XExecutor.OnAllTaskEndListener*/ {
private RecyclerView recyclerView;
private DownloadManagerAdapter adapter;
-// private OkDownload okDownload;
private ImageView iv_notask;
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_download_manager;
}
@Override
- protected void initView() {
+ public void initView() {
recyclerView = findViewById(R.id.recyclerView);
iv_notask = findViewById(R.id.iv_notask);
}
@Override
- protected void initData() {
+ public void initData() {
// okDownload = OkDownload.getInstance();
adapter = new DownloadManagerAdapter(this, handler);
// adapter.updateData(DownloadManagerAdapter.TYPE_ING);
@@ -46,27 +48,11 @@ public class DownloadManagerActivity extends BaseActivity /*implements XExecutor
iv_notask.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
}
-// okDownload.addOnAllTaskEndListener(this);
}
- @Override
- protected void setListener() {
-
- }
-
-
-// @Override
-// public void onAllTaskEnd() {
-// ToastUtil.show("所有任务已完成");
-// adapter.notifyDataSetChanged();
-//
-// }
-
@Override
protected void onDestroy() {
super.onDestroy();
-// okDownload.removeOnAllTaskEndListener(this);
-// adapter.unRegister();
}
@Override
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/HintActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/HintActivity.java
index 4fca3bf..4013362 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/HintActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/HintActivity.java
@@ -17,8 +17,11 @@ public class HintActivity extends BaseActivity {
private TextView tv_hint;
private Button bt_confirm;
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_hint;
}
@@ -27,22 +30,6 @@ public class HintActivity extends BaseActivity {
root = findViewById(R.id.root);
tv_hint = findViewById(R.id.tv_hint);
bt_confirm = findViewById(R.id.bt_confirm);
-
- }
-
- @Override
- public void initData() {
- Intent intent = getIntent();
- if (intent != null) {
- String text = intent.getStringExtra("text");
- if (!TextUtils.isEmpty(text)) {
- tv_hint.setText(text);
- }
- }
- }
-
- @Override
- protected void setListener() {
root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -59,6 +46,17 @@ public class HintActivity extends BaseActivity {
});
}
+ @Override
+ public void initData() {
+ Intent intent = getIntent();
+ if (intent != null) {
+ String text = intent.getStringExtra("text");
+ if (!TextUtils.isEmpty(text)) {
+ tv_hint.setText(text);
+ }
+ }
+ }
+
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/KindDetailActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/KindDetailActivity.java
index 293cceb..3323e81 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/KindDetailActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/KindDetailActivity.java
@@ -27,14 +27,16 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R
private AppAdapter adapter;
private ImageView mImageView;
+ /**
+ * 设置布局
+ */
@Override
-
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_kind_detail;
}
@Override
- protected void initView() {
+ public void initView() {
title = findViewById(R.id.detail_tv_title);
detail_rv = findViewById(R.id.detail_rv);
mRefreshLayout = findViewById(R.id.detail_refresh_layout);
@@ -42,7 +44,7 @@ public class KindDetailActivity extends BaseActivity implements RefreshManager.R
}
@Override
- protected void initData() {
+ public void initData() {
subject = getIntent().getIntExtra("kind", 0);
name = getIntent().getStringExtra("name");
if (name.equals("娱乐")) {
@@ -60,15 +62,9 @@ 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);
- }
-
- @Override
- protected void setListener() {
-
}
public void finish(View view) {
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/LocalManagerActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/LocalManagerActivity.java
index 86b5ad6..5d2109f 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/LocalManagerActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/LocalManagerActivity.java
@@ -26,13 +26,16 @@ public class LocalManagerActivity extends BaseActivity implements RefreshManager
private LocalAppAdapter adapter;
private ImageView iv_nodata;
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_local_manager;
}
@Override
- protected void initView() {
+ public void initView() {
mRvApp = findViewById(R.id.local_app_rv_app);
iv_nodata = findViewById(R.id.iv_nodata);
mRefreshLayout = findViewById(R.id.local_app_refresh_layout);
@@ -55,7 +58,7 @@ public class LocalManagerActivity extends BaseActivity implements RefreshManager
}
@Override
- protected void initData() {
+ public void initData() {
initDatas();
}
@@ -79,11 +82,6 @@ public class LocalManagerActivity extends BaseActivity implements RefreshManager
}
}
- @Override
- protected void setListener() {
-
- }
-
@Override
public void onRefresh() {
mRefreshLayout.autoRefresh();
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/MainActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/MainActivity.java
index f5a2868..6e6cbe7 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/MainActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/MainActivity.java
@@ -3,8 +3,6 @@ package com.uiuipad.appstore.activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
-import android.provider.Settings;
-import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
@@ -21,16 +19,10 @@ import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.uiuipad.appstore.R;
import com.uiuipad.appstore.base.BaseActivity;
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.bean.UserInfo;
-import com.uiuipad.appstore.fragment.FeaturedFragment;
-import com.uiuipad.appstore.network.NetInterfaceManager;
+import com.uiuipad.appstore.fragment.featured.FeaturedFragment;
import com.uiuipad.appstore.service.main.MainService;
import com.uiuipad.appstore.utils.JGYUtils;
-import com.uiuipad.appstore.utils.SPUtils;
import com.uiuipad.appstore.utils.ToastUtil;
-import com.uiuipad.appstore.utils.Utils;
import java.io.File;
import java.util.ArrayList;
@@ -38,12 +30,7 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
-import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
-import io.reactivex.rxjava3.core.Observer;
-import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.schedulers.Schedulers;
-
public class MainActivity extends BaseActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@@ -59,7 +46,6 @@ public class MainActivity extends BaseActivity {
@BindView(R.id.main_view_pager)
ViewPager mViewPager;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -68,13 +54,16 @@ public class MainActivity extends BaseActivity {
JGYUtils.getInstance().checkLocalExternalFiles();
}
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_main;
}
@Override
- protected void initView() {
+ public void initView() {
ButterKnife.bind(this);
iv_appicon.setOnClickListener(new View.OnClickListener() {
@Override
@@ -98,8 +87,8 @@ public class MainActivity extends BaseActivity {
}
@Override
- protected void initData() {
-// getAllAppPackageName();
+ public void initData() {
+
}
private void starService() {
@@ -136,7 +125,6 @@ public class MainActivity extends BaseActivity {
@Override
protected void onStart() {
super.onStart();
-// getUserInfo();
}
@Override
@@ -151,21 +139,10 @@ public class MainActivity extends BaseActivity {
Log.e(TAG, "onSaveInstanceState");
}
- @Override
- protected void setListener() {
-
- }
-
private String[] permission = new String[]{
-// Permission.SYSTEM_ALERT_WINDOW,
-// Permission.CAMERA,
-// Permission.READ_SMS,
-// Permission.RECEIVE_SMS,
-// Permission.SEND_SMS,
Permission.REQUEST_INSTALL_PACKAGES,
Permission.READ_EXTERNAL_STORAGE,
Permission.WRITE_EXTERNAL_STORAGE,
-// Permission.READ_PHONE_STATE
};
public void requestPermission() {
@@ -221,94 +198,4 @@ public class MainActivity extends BaseActivity {
finish();
}
}
-
- private void getUserInfo() {
- NetInterfaceManager.getInstance().getuserInfoControl().getUserinfo(Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
-
- }
-
- @Override
- public void onNext(@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());
- if (!TextUtils.isEmpty(info.getGrade())) {
- SPUtils.put(MainActivity.this, "sn_grade", info.getGrade());
- }
- }
- //没有绑定
- else if (code == 300) {
- SPUtils.put(MainActivity.this, "isLogined", 0);
-// Intent intent = new Intent();
-// intent.putExtra("text", getResources().getString(R.string.no_bind));
-// intent.setClass(MainActivity.this, HintActivity.class);
-// startActivity(intent);
- }
- //没有设备
- else if (code == 400) {
- SPUtils.put(MainActivity.this, "isLogined", 2);
-
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e(TAG, "onError: " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
-
- }
- });
- }
-
- private void getAllAppPackageName() {
- NetInterfaceManager.getInstance()
- .getQueryAllAppObservable()
- .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;
- 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(), "aole_app_forbid");
- Log.e("getAllAppPackageName:", "qch_app_forbid_before" + qch_app_forbid_before);
-// boolean aole_app_forbid = Settings.System.putString(getContentResolver(), "aole_app_forbid", s);
-// Log.e("getAllAppPackageName", "aole_app_forbid:" + aole_app_forbid + ":" + s);
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e(TAG, "onError: " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
-
- }
- });
- }
}
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/ManagerAppActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/ManagerAppActivity.java
index 11fc067..65c63aa 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/ManagerAppActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/ManagerAppActivity.java
@@ -10,23 +10,21 @@ import butterknife.ButterKnife;
public class ManagerAppActivity extends BaseActivity {
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_manager_app;
}
@Override
- protected void initView() {
+ public void initView() {
ButterKnife.bind(this);
}
@Override
- protected void initData() {
-
- }
-
- @Override
- protected void setListener() {
+ public void initData() {
}
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/MoreAppActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/MoreAppActivity.java
index 30c8eb2..6049e7c 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/MoreAppActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/MoreAppActivity.java
@@ -13,10 +13,11 @@ import androidx.recyclerview.widget.RecyclerView;
import com.uiuipad.appstore.R;
import com.uiuipad.appstore.adapter.AppAdapter;
import com.uiuipad.appstore.base.BaseActivity;
+import com.uiuipad.appstore.bean.AdminAppInfo;
import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.base.BaseResponse;
import com.uiuipad.appstore.common.CommonConfig;
-import com.uiuipad.appstore.fragment.FeaturedFragment;
+import com.uiuipad.appstore.fragment.featured.FeaturedFragment;
import com.uiuipad.appstore.network.NetInterfaceManager;
import com.uiuipad.appstore.utils.ToastUtil;
@@ -43,13 +44,17 @@ public class MoreAppActivity extends BaseActivity {
private AppAdapter mAppAdapter;
+
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_more_app;
}
@Override
- protected void initView() {
+ public void initView() {
ButterKnife.bind(this);
Intent intent = getIntent();
if (intent == null) {
@@ -78,86 +83,16 @@ public class MoreAppActivity extends BaseActivity {
}
@Override
- protected void initData() {
-
- }
-
- @Override
- protected void setListener() {
+ public void initData() {
}
private void getExclusiveApp() {
- NetInterfaceManager.getInstance()
- .getQueryAllAppObservable()
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getAllAppInfo", "onSubscribe: ");
- }
- @Override
- public void onNext(@NonNull BaseResponse> listBaseResponse) {
- Log.e("getAllAppInfo", "onNext: " + listBaseResponse);
- setAllAppdata(listBaseResponse);
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getAllAppInfo", "onError: " + e.getMessage());
- setAllAppError();
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getAllAppInfo", "onComplete: ");
- }
- });
}
private void getAdminApp() {
- NetInterfaceManager.getInstance()
- .getAdminAppByClassObservable(2)
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("getAdminApp", "onSubscribe: ");
- }
- @Override
- public void onNext(BaseResponse> listBaseResponse) {
- Log.e("getAdminApp", "onSubscribe: " + listBaseResponse);
- setAllAppdata(listBaseResponse);
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("getAdminApp", "onError: " + e.getMessage());
- setAllAppError();
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getAdminApp", "onComplete: ");
- }
- });
- }
-
- private void setAllAppdata(BaseResponse> listBaseResponse) {
- int code = listBaseResponse.code;
- if (code == 200) {
- List infos = listBaseResponse.data;
- List sortedApp = infos.stream().sorted(Comparator.comparingInt(AppInfo::getWeight).reversed()).collect(Collectors.toList());
- mRecyclerView.setVisibility(View.VISIBLE);
- iv_nodata.setVisibility(View.GONE);
- mAppAdapter.setData(sortedApp);
- } else {
- mRecyclerView.setVisibility(View.GONE);
- iv_nodata.setImageDrawable(getDrawable(R.drawable.app_nodata));
- iv_nodata.setVisibility(View.VISIBLE);
- }
}
private void setAllAppError() {
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/PrivacyPolicyActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/PrivacyPolicyActivity.java
index 3088ed6..a310a93 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/PrivacyPolicyActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/PrivacyPolicyActivity.java
@@ -19,12 +19,15 @@ public class PrivacyPolicyActivity extends BaseActivity {
private WebView webView;
private TextView tv_content;
+
+ /**
+ * 设置布局
+ */
@Override
- public int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_privacypolicy;
}
-
@Override
public void initView() {
webView = findViewById(R.id.webView);
@@ -38,11 +41,6 @@ public class PrivacyPolicyActivity extends BaseActivity {
// tv_content.setText(readAsset("应用市场-隐私政策.txt"));
}
- @Override
- protected void setListener() {
-
- }
-
private void initWebView() {
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/SearcherActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/SearcherActivity.java
index 1d4f075..d5141c0 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/SearcherActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/SearcherActivity.java
@@ -18,7 +18,7 @@ import com.uiuipad.appstore.R;
import com.uiuipad.appstore.adapter.AppAdapter;
import com.uiuipad.appstore.base.BaseActivity;
import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.base.BaseResponse;
import com.uiuipad.appstore.common.CommonConfig;
import com.uiuipad.appstore.network.NetInterfaceManager;
import com.uiuipad.appstore.utils.ToastUtil;
@@ -28,10 +28,8 @@ 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 SearcherActivity extends BaseActivity {
@@ -46,54 +44,22 @@ public class SearcherActivity extends BaseActivity {
@BindView(R.id.tv_search)
TextView tv_search;
-// @BindView(R.id.search)
-// SearchView search;
-
private AppAdapter mAppAdapter;
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_searcher;
}
@Override
- protected void initView() {
+ public void initView() {
ButterKnife.bind(this);
-// int id = search.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
-// TextView textView = search.findViewById(androidx.appcompat.R.id.search_src_text);
-// textView.setTextColor(Color.BLACK);
-// textView.setHintTextColor(Color.GRAY);//提示字体颜色**
edit_search.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
edit_search.setInputType(EditorInfo.TYPE_CLASS_TEXT);
- }
-
- @Override
- protected void initData() {
- mAppAdapter = new AppAdapter(SearcherActivity.this);
- mAppAdapter.setHasStableIds(true);
- mAppAdapter.setLineShow(false);
- recyclerView.setAdapter(mAppAdapter);
- recyclerView.setLayoutManager(new LinearLayoutManager(this));
- }
-
- @Override
- protected void setListener() {
-// search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
-// @Override
-// public boolean onQueryTextSubmit(String query) {
-// LogUtils.e("icon_serach", query);
-//// OKGO.searchAppbyName(handler, query);
-// return false;
-// }
-//
-// @Override
-// public boolean onQueryTextChange(String newText) {
-// madapter.setData(new ArrayList());
-// madapter.notifyDataSetChanged();
-// return false;
-// }
-// });
edit_search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
@@ -125,6 +91,16 @@ public class SearcherActivity extends BaseActivity {
checkContent(text);
}
});
+
+ }
+
+ @Override
+ public void initData() {
+ mAppAdapter = new AppAdapter(SearcherActivity.this);
+ mAppAdapter.setHasStableIds(true);
+ mAppAdapter.setLineShow(false);
+ recyclerView.setAdapter(mAppAdapter);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
private void checkContent(String text) {
@@ -141,74 +117,11 @@ public class SearcherActivity extends BaseActivity {
}
private void searcheApp(String text) {
- NetInterfaceManager.getInstance()
- .getSearchAdminAppControl()
- .getAdminApp(text)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("searcheApp", "onSubscribe: ");
- }
- @Override
- public void onNext(BaseResponse> listBaseResponse) {
- Log.e("searcheApp", "onNext: " + listBaseResponse);
- if (listBaseResponse.code == 200) {
- List appInfos = listBaseResponse.data;
- if (appInfos != null && appInfos.size() > 0) {
- mAppAdapter.setData(listBaseResponse.data);
- }
- } else {
- mAppAdapter.setData(new ArrayList<>());
- ToastUtil.show("没有搜索到相关应用");
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("searcheApp", "onError: " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- Log.e("searcheApp", "onComplete: ");
- }
- });
}
private void getAllAppPackageName() {
- NetInterfaceManager.getInstance()
- .getQueryAllAppObservable()
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e(TAG, "onSubscribe: ");
- }
- @Override
- public void onNext(BaseResponse> listBaseResponse) {
- if (listBaseResponse.code == 200) {
- List appInfos = listBaseResponse.data;
- if (appInfos != null && appInfos.size() > 0) {
- mAppAdapter.setData(listBaseResponse.data);
- }
- } else {
- mAppAdapter.setData(new ArrayList<>());
- }
- }
-
- @Override
- public void onError(Throwable e) {
-
- }
-
- @Override
- public void onComplete() {
-
- }
- });
}
public void finish(View view) {
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/UserAgreementActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/UserAgreementActivity.java
index 6e2f703..dfef444 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/UserAgreementActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/UserAgreementActivity.java
@@ -17,15 +17,17 @@ import java.nio.charset.StandardCharsets;
public class UserAgreementActivity extends BaseActivity {
private WebView webView;
+ /**
+ * 设置布局
+ */
@Override
- public int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_useragreement;
}
@Override
public void initView() {
webView = findViewById(R.id.webView);
-
}
@Override
@@ -34,11 +36,6 @@ public class UserAgreementActivity extends BaseActivity {
webView.loadDataWithBaseURL(null, readAsset("user_agreement.html"), "text/html", "UTF-8", null);
}
- @Override
- protected void setListener() {
-
- }
-
private void initWebView() {
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/DetailsActivity.java b/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsActivity.java
similarity index 55%
rename from app/src/main/java/com/uiuipad/appstore/activity/DetailsActivity.java
rename to app/src/main/java/com/uiuipad/appstore/activity/details/DetailsActivity.java
index d5d685c..25d6cf6 100644
--- a/app/src/main/java/com/uiuipad/appstore/activity/DetailsActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsActivity.java
@@ -1,11 +1,9 @@
-package com.uiuipad.appstore.activity;
+package com.uiuipad.appstore.activity.details;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.text.TextUtils;
-import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.HorizontalScrollView;
@@ -28,8 +26,7 @@ import com.google.gson.JsonParser;
import com.uiuipad.appstore.R;
import com.uiuipad.appstore.adapter.ImageAdapter;
import com.uiuipad.appstore.base.BaseActivity;
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.bean.AdminAppInfo;
import com.uiuipad.appstore.bean.GlideCircleWithBorder;
import com.uiuipad.appstore.dialog.InstallDialog;
import com.uiuipad.appstore.helper.CustomSnapHelper;
@@ -41,17 +38,12 @@ import com.uiuipad.appstore.utils.ToastUtil;
import com.uiuipad.appstore.utils.Utils;
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 {
+public class DetailsActivity extends BaseActivity implements DetailsContact.DetailsView {
private static final String TAG = DetailsActivity.class.getSimpleName();
@BindView(R.id.detail_tv_title)
@@ -83,77 +75,78 @@ public class DetailsActivity extends BaseActivity {
@BindView(R.id.scrollView)
HorizontalScrollView scrollView;
- private ImageAdapter imageAdapter;
- private installReceiver myReceiver;
- private AppInfo appInfo;
+ private ImageAdapter mImageAdapter;
+ private InstallReceiver mInstallReceiver;
+ private AdminAppInfo mAdminAppInfo;
- boolean installed;
- boolean update;
+ boolean mInstalled;
+ boolean mUpdate;
+ private DetailsPresenter mPresenter;
+
+
+ /**
+ * 设置布局
+ */
@Override
- protected int setLayoutResourceID() {
+ public int getLayoutId() {
return R.layout.activity_details;
}
@Override
- protected void initView() {
+ public void initView() {
ButterKnife.bind(this);
+ mPresenter = new DetailsPresenter(this);
+ mPresenter.attachView(this);
+ mPresenter.setLifecycle(lifecycleSubject);
+
Aria.download(this).register();
rv_image.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
CustomSnapHelper snapHelper = new CustomSnapHelper();
snapHelper.attachToRecyclerView(rv_image);
- imageAdapter = new ImageAdapter();
- rv_image.setAdapter(imageAdapter);
+ mImageAdapter = new ImageAdapter();
+ rv_image.setAdapter(mImageAdapter);
- appInfo = (AppInfo) getIntent().getSerializableExtra("appinfo");
- if (appInfo == null) {
+ mAdminAppInfo = (AdminAppInfo) getIntent().getSerializableExtra("appinfo");
+ if (mAdminAppInfo == null) {
ToastUtil.show("获取引用信息失败,返回重试");
return;
} else {
- getPackageApp(appInfo.getApp_package(), appInfo.getApp_version_code());
+ mPresenter.getAdminAppDetails(mAdminAppInfo.getId());
}
- tv_name.setText(appInfo.getApp_name());
- tv_company.setText(appInfo.getApp_developer());
- 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());
- 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);
- setImage(appInfo);
+
+
+
}
@Override
- protected void initData() {
- installed = ApkUtils.isInstalled(DetailsActivity.this, appInfo.getApp_package());
- update = ApkUtils.isUpdate(DetailsActivity.this, appInfo.getApp_package(), appInfo.getApp_version_code());
- if (installed) {
- if (update) {
- tv_download.setText("更新" + "(" + StorageUtils.byteToMB(appInfo.getApp_size()) + ")");
+ public void initData() {
+ mInstalled = ApkUtils.isInstalled(DetailsActivity.this, mAdminAppInfo.getApp_package());
+ mUpdate = ApkUtils.isUpdate(DetailsActivity.this, mAdminAppInfo.getApp_package(), mAdminAppInfo.getApp_version_code());
+ if (mInstalled) {
+ if (mUpdate) {
+ tv_download.setText("更新" + "(" + StorageUtils.byteToMB(mAdminAppInfo.getApp_size()) + ")");
} else {
tv_download.setText("打开");
}
} else {
- tv_download.setText("安装" + "(" + StorageUtils.byteToMB(appInfo.getApp_size()) + ")");
+ tv_download.setText("安装" + "(" + StorageUtils.byteToMB(mAdminAppInfo.getApp_size()) + ")");
}
tv_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!Utils.canDownloadApp(DetailsActivity.this)) {
// ToastUtil.show("应用市场已被禁止安装");
-
InstallDialog installDialog = new InstallDialog(DetailsActivity.this);
- installDialog.setMessage(String.format(getString(R.string.install_note), appInfo.getApp_name()))
+ installDialog.setMessage(String.format(getString(R.string.install_note), mAdminAppInfo.getApp_name()))
.setTitle("提示")
.setPositive("申请安装")
.setNegtive("取消")
- .setImageUrl(appInfo.getApp_img())
+ .setImageUrl(mAdminAppInfo.getApp_icon())
.setOnClickBottomListener(new InstallDialog.OnClickBottomListener() {
@Override
public void onPositiveClick() {
- NetInterfaceManager.getInstance().getApplyForInstall(appInfo.getApp_package(), appInfo.getApp_name()
+ NetInterfaceManager.getInstance().getApplyForInstall(mAdminAppInfo.getApp_package(), mAdminAppInfo.getApp_name()
, new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
@@ -170,10 +163,10 @@ public class DetailsActivity extends BaseActivity {
installDialog.show();
return;
}
- if (installed && !update) {
- ApkUtils.openApp(DetailsActivity.this, appInfo.getApp_package());
+ if (mInstalled && !mUpdate) {
+ ApkUtils.openApp(DetailsActivity.this, mAdminAppInfo.getApp_package());
} else {
- DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(appInfo.getApp_url());
+ DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(mAdminAppInfo.getApp_url());
if (null != entity) {
switch (entity.getState()) {
case IEntity.STATE_OTHER:
@@ -197,77 +190,53 @@ public class DetailsActivity extends BaseActivity {
ApkUtils.installApp(DetailsActivity.this, entity.getFilePath());
} else {
Aria.download(this).load(entity.getId()).cancel(true);
- JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject();
- FileUtils.ariaDownload(DetailsActivity.this, appInfo.getApp_url(), jsonObject);
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(mAdminAppInfo)).getAsJsonObject();
+ FileUtils.ariaDownload(DetailsActivity.this, mAdminAppInfo.getApp_url(), jsonObject);
}
break;
default:
}
} else {
- JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject();
- FileUtils.ariaDownload(DetailsActivity.this, appInfo.getApp_url(), jsonObject);
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(mAdminAppInfo)).getAsJsonObject();
+ FileUtils.ariaDownload(DetailsActivity.this, mAdminAppInfo.getApp_url(), jsonObject);
}
}
}
});
+
+ if (mInstallReceiver == null) {
+ mInstallReceiver = new InstallReceiver();
+ IntentFilter filter = new IntentFilter();
+ filter.addAction("com.uiuipad.appstore.PACKAGE_ADDED");
+ filter.addAction("com.uiuipad.appstore.PACKAGE_REPLACED");
+ filter.addAction("com.uiuipad.appstore.PACKAGE_REMOVED");
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ registerReceiver(mInstallReceiver, filter);
+ }
}
- private void setImage(final AppInfo info) {
- List list = new ArrayList() {{
- this.add(info.getApp_preview1());
- this.add(info.getApp_preview2());
- this.add(info.getApp_preview3());
- }};
- imageAdapter.setData(list);
+ private void setImage( AdminAppInfo info) {
+ List list = info.getApp_preview();
+ mImageAdapter.setData(list);
}
- void getPackageApp(String packageName, long versionCode) {
- NetInterfaceManager.getInstance()
- .getQueryPackageAppControl()
- .getPackageApp(packageName, versionCode)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("getPackageApp", "onSubscribe: ");
- }
-
- @Override
- public void onNext(BaseResponse appInfoBaseResponse) {
- Log.e("getPackageApp", "onNext: " + appInfoBaseResponse);
- if (appInfoBaseResponse.code == 200) {
- AppInfo info = appInfoBaseResponse.data;
- if (!TextUtils.isEmpty(info.getApp_preview1())) {
- appInfo.setApp_preview1(info.getApp_preview1());
- }
- if (!TextUtils.isEmpty(info.getApp_preview2())) {
- appInfo.setApp_preview2(info.getApp_preview2());
- }
- if (!TextUtils.isEmpty(info.getApp_preview3())) {
- appInfo.setApp_preview3(info.getApp_preview3());
- }
- appInfo.setApp_version_name(info.getApp_version_name());
- setImage(appInfo);
- } else {
- scrollView.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("getPackageApp", "onError: " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- Log.e("getPackageApp", "onComplete: ");
- }
- });
+ @Override
+ public void setAdminAppDetails(AdminAppInfo adminAppInfo) {
+ tv_name.setText(mAdminAppInfo.getApp_name());
+ tv_company.setText(mAdminAppInfo.getApp_developer());
+ detali_tv_size.setText("大小\t" + "(" + StorageUtils.byteToMB(mAdminAppInfo.getApp_size()) + ")");
+ detail_tv_Developers.setText("开发者\t" + mAdminAppInfo.getApp_developer());
+ tv_update_time.setText("时间\t" + mAdminAppInfo.getUpdate_time());
+ tv_version.setText("版本\t" + mAdminAppInfo.getApp_version_name());
+ tv_content.setText(mAdminAppInfo.getApp_remarks());
+ detali_tv_version.setText("版本:" + mAdminAppInfo.getApp_version_name());
+ rating_bar.setRating(mAdminAppInfo.getApp_score());
+ Glide.with(this).asBitmap().load(mAdminAppInfo.getApp_icon()).transform(new GlideCircleWithBorder(this)).into(iv_icon);
+ setImage(mAdminAppInfo);
}
void refresh(DownloadTask task) {
- if (appInfo.getApp_url().equals(task.getEntity().getUrl())) {
+ if (mAdminAppInfo.getApp_url().equals(task.getEntity().getUrl())) {
switch (task.getState()) {
case IEntity.STATE_OTHER:
tv_download.setText("安装");
@@ -292,97 +261,19 @@ public class DetailsActivity extends BaseActivity {
}
}
- @Override
- protected void setListener() {
- if (myReceiver == null) {
- myReceiver = new installReceiver();
- IntentFilter filter = new IntentFilter();
- filter.addAction("com.uiuipad.appstore.PACKAGE_ADDED");
- filter.addAction("com.uiuipad.appstore.PACKAGE_REPLACED");
- filter.addAction("com.uiuipad.appstore.PACKAGE_REMOVED");
- filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
- registerReceiver(myReceiver, filter);
- }
- }
-
public void finish(View view) {
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;
-// }
-// }
-// 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 {
+ public class InstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//接收安装广播
if ("com.uiuipad.appstore.PACKAGE_ADDED".equals(action) || "com.uiuipad.appstore.PACKAGE_REPLACED".equals(action)) {
String packageName = intent.getStringExtra("package");
- if (packageName.equalsIgnoreCase(appInfo.getApp_package())) {
+ if (packageName.equalsIgnoreCase(mAdminAppInfo.getApp_package())) {
tv_download.setText("打开");
}
initData();
@@ -393,8 +284,9 @@ public class DetailsActivity extends BaseActivity {
@Override
protected void onDestroy() {
super.onDestroy();
- if (myReceiver != null) {
- unregisterReceiver(myReceiver);
+ mPresenter.detachView();
+ if (mInstallReceiver != null) {
+ unregisterReceiver(mInstallReceiver);
Aria.download(this).unRegister();
}
}
@@ -444,5 +336,4 @@ public class DetailsActivity extends BaseActivity {
refresh(task);
}
-
}
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsContact.java b/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsContact.java
new file mode 100644
index 0000000..5a4da8e
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsContact.java
@@ -0,0 +1,16 @@
+package com.uiuipad.appstore.activity.details;
+
+import com.uiuipad.appstore.base.BasePresenter;
+import com.uiuipad.appstore.base.BaseView;
+import com.uiuipad.appstore.bean.AdminAppInfo;
+
+public class DetailsContact {
+ interface Presenter extends BasePresenter {
+ void getAdminAppDetails(long id);
+ }
+
+
+ public interface DetailsView extends BaseView {
+ void setAdminAppDetails(AdminAppInfo adminAppInfo);
+ }
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsPresenter.java b/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsPresenter.java
new file mode 100644
index 0000000..49c3b4a
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/activity/details/DetailsPresenter.java
@@ -0,0 +1,74 @@
+package com.uiuipad.appstore.activity.details;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuipad.appstore.base.BaseResponse;
+import com.uiuipad.appstore.bean.AppClassBean;
+import com.uiuipad.appstore.network.NetInterfaceManager;
+
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.subjects.BehaviorSubject;
+
+public class DetailsPresenter implements DetailsContact.Presenter {
+ private Context mContext;
+
+ DetailsPresenter(Context context) {
+ this.mContext = context;
+ }
+
+ private DetailsContact.DetailsView mView;
+
+ private BehaviorSubject lifecycle;
+
+ public void setLifecycle(BehaviorSubject lifecycle) {
+ this.lifecycle = lifecycle;
+ }
+
+ public BehaviorSubject getLifecycle() {
+ return lifecycle;
+ }
+
+ @Override
+ public void attachView(DetailsContact.DetailsView view) {
+ this.mView = view;
+ }
+
+ @Override
+ public void detachView() {
+ this.mView = null;
+ }
+
+
+ @Override
+ public void getAdminAppDetails(long id) {
+ NetInterfaceManager.getInstance().getAdminAppDetailsObservable(id)
+ .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAdminAppDetails", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse appClassBeanBaseResponse) {
+ Log.e("getAdminAppDetails", "onNext: " + appClassBeanBaseResponse);
+
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAdminAppDetails", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAdminAppDetails", "onComplete: ");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/adapter/AppAdapter.java b/app/src/main/java/com/uiuipad/appstore/adapter/AppAdapter.java
index 57dc54b..77c88cf 100644
--- a/app/src/main/java/com/uiuipad/appstore/adapter/AppAdapter.java
+++ b/app/src/main/java/com/uiuipad/appstore/adapter/AppAdapter.java
@@ -22,8 +22,8 @@ import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.uiuipad.appstore.R;
-import com.uiuipad.appstore.activity.DetailsActivity;
-import com.uiuipad.appstore.bean.AppInfo;
+import com.uiuipad.appstore.activity.details.DetailsActivity;
+import com.uiuipad.appstore.bean.AdminAppInfo;
import com.uiuipad.appstore.bean.GlideCircleWithBorder;
import com.uiuipad.appstore.dialog.InstallDialog;
import com.uiuipad.appstore.network.NetInterfaceManager;
@@ -37,15 +37,11 @@ import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.List;
-/**
- * Created by asus on 2017/10/23.
- */
-
public class AppAdapter extends RecyclerView.Adapter {
private static final String TAG = AppAdapter.class.getSimpleName();
private Context mContext;
- private List mAppInfoList;
+ private List mAppInfoList;
private DownloadTask mDownloadTask;
private boolean mShowLine = true;
@@ -63,12 +59,11 @@ public class AppAdapter extends RecyclerView.Adapter {
@Override
public void onBindViewHolder(final Holder holder, final int position) {
Aria.download(this).register();
- final AppInfo appInfo = mAppInfoList.get(position);
-// ImageLoader.getDefault().loadUrlRound(mContext, appInfo.getApp_img(), holder.ivIcon);
+ final AdminAppInfo appInfo = mAppInfoList.get(position);
Glide.with(mContext)
.asBitmap()
- .load(appInfo.getApp_img())
+ .load(appInfo.getApp_icon())
.error(R.mipmap.ic_launcher)
// .placeholder(R.drawable.ic_place_holder)
.transform(new GlideCircleWithBorder(mContext))
@@ -137,14 +132,12 @@ public class AppAdapter extends RecyclerView.Adapter {
ApkUtils.openApp(mContext, appInfo.getApp_package());
} else {
if (!Utils.canDownloadApp(mContext)) {
-// ToastUtil.show("应用市场已被禁止安装");
-
InstallDialog installDialog = new InstallDialog(mContext);
installDialog.setMessage(String.format(mContext.getString(R.string.install_note), appInfo.getApp_name()))
.setTitle("提示")
.setPositive("申请安装")
.setNegtive("取消")
- .setImageUrl(appInfo.getApp_img())
+ .setImageUrl(appInfo.getApp_icon())
.setOnClickBottomListener(new InstallDialog.OnClickBottomListener() {
@Override
public void onPositiveClick() {
@@ -301,7 +294,7 @@ public class AppAdapter extends RecyclerView.Adapter {
notifyDataSetChanged();
}
- public void setData(List appInfos) {
+ public void setData(List appInfos) {
this.mAppInfoList = appInfos;
notifyDataSetChanged();
}
diff --git a/app/src/main/java/com/uiuipad/appstore/adapter/ClassAdapter.java b/app/src/main/java/com/uiuipad/appstore/adapter/ClassAdapter.java
index a5d0fd7..c0cb1ef 100644
--- a/app/src/main/java/com/uiuipad/appstore/adapter/ClassAdapter.java
+++ b/app/src/main/java/com/uiuipad/appstore/adapter/ClassAdapter.java
@@ -29,7 +29,7 @@ public class ClassAdapter extends RecyclerView.Adapter {
@Override
public void onBindViewHolder(@NonNull Holder holder, int position) {
AppClassBean appClassBean = mAppClassList.get(position);
- Glide.with(mContext).load(appClassBean.getImg_url()).error(R.drawable.ic_app).into(holder.mImageView);
+ Glide.with(mContext).load(appClassBean.getImg()).error(R.drawable.ic_app).into(holder.mImageView);
}
@Override
diff --git a/app/src/main/java/com/uiuipad/appstore/adapter/ImageAdapter.java b/app/src/main/java/com/uiuipad/appstore/adapter/ImageAdapter.java
index 4f1817b..9900557 100644
--- a/app/src/main/java/com/uiuipad/appstore/adapter/ImageAdapter.java
+++ b/app/src/main/java/com/uiuipad/appstore/adapter/ImageAdapter.java
@@ -15,10 +15,6 @@ import org.jetbrains.annotations.NotNull;
import java.util.List;
-/**
- * Created by fht on 2019/11/08.
- */
-
public class ImageAdapter extends RecyclerView.Adapter {
private List mSrcList;
private Context mContext;
@@ -45,7 +41,7 @@ public class ImageAdapter extends RecyclerView.Adapter data) {
diff --git a/app/src/main/java/com/uiuipad/appstore/adapter/KindAdapter.java b/app/src/main/java/com/uiuipad/appstore/adapter/KindAdapter.java
deleted file mode 100644
index 35e0135..0000000
--- a/app/src/main/java/com/uiuipad/appstore/adapter/KindAdapter.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.uiuipad.appstore.adapter;
-
-import android.content.Context;
-import android.content.Intent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.uiuipad.appstore.R;
-import com.uiuipad.appstore.activity.KindDetailActivity;
-import com.uiuipad.appstore.bean.Kind;
-import com.bumptech.glide.Glide;
-
-import java.util.List;
-
-/**
- * Created by asus on 2017/10/25.
- */
-
-public class KindAdapter extends RecyclerView.Adapter {
-
- private List mKindList;
- private Context mContext;
-
- public KindAdapter(List mKindList, Context context) {
- this.mKindList = mKindList;
- this.mContext = context;
- }
-
- @Override
- public KindViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- return new KindViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_kind, parent, false));
- }
-
- @Override
- public void onBindViewHolder(KindViewHolder holder, int position) {
- final Kind kind = mKindList.get(position);
- if (kind.getHide() == 1) {
- setVisibility( false,holder.root);
- }else {
- setVisibility( true,holder.root);
- }
- holder.tvName.setText(kind.getName());
- Glide.with(mContext).load(kind.getIcon())
-// .transform(new GlideCircleWithBorder(mContext))
- .into(holder.ivIcon);
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-// KindDetailActivity.startActivity(mContext, kind.getCategory(), kind.getName());
- Intent intent = new Intent(mContext, KindDetailActivity.class);
- intent.putExtra("kind", kind.getCategory());
- intent.putExtra("name", kind.getName());
- mContext.startActivity(intent);
-
- }
- });
-
- }
- // 防止隐藏item出现空白
- public void setVisibility(boolean isVisible, View itemView) {
- RecyclerView.LayoutParams param = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- if (isVisible) {
- param.height = LinearLayout.LayoutParams.WRAP_CONTENT;
- param.width = LinearLayout.LayoutParams.MATCH_PARENT;
- itemView.setVisibility(View.VISIBLE);
- } else {
- param.height = 0;
- param.width = 0;
- itemView.setVisibility(View.GONE);
- }
- itemView.setLayoutParams(param);
- }
-
- @Override
- public int getItemCount() {
- return mKindList.size();
- }
-
- public static class KindViewHolder extends RecyclerView.ViewHolder {
- ImageView ivIcon, ivDetail;
- TextView tvName;
- LinearLayout root;
-
- public KindViewHolder(View itemView) {
- super(itemView);
- ivIcon = itemView.findViewById(R.id.kind_iv_icon);
- ivDetail = itemView.findViewById(R.id.kind_iv_detail);
- tvName = itemView.findViewById(R.id.kind_tv_name);
- root = itemView.findViewById(R.id.root);
- }
- }
-
-
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/adapter/ShowImageAdapter.java b/app/src/main/java/com/uiuipad/appstore/adapter/ShowImageAdapter.java
deleted file mode 100644
index 6dada5a..0000000
--- a/app/src/main/java/com/uiuipad/appstore/adapter/ShowImageAdapter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.uiuipad.appstore.adapter;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.uiuipad.appstore.R;
-import com.uiuipad.appstore.bean.GlideCircleWithBorder;
-import com.bumptech.glide.Glide;
-
-import java.util.List;
-
-/**
- * Created by fht on 2019/11/08.
- */
-
-public class ShowImageAdapter extends RecyclerView.Adapter {
-
- private List mSrcList;
- private Context mContext;
-
-
- public ShowImageAdapter(List mSrcList, Context context) {
- this.mContext = context;
- this.mSrcList = mSrcList;
- }
-
- @Override
- public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- return new ImageViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false));
- }
-
- @Override
- public void onBindViewHolder(ImageViewHolder holder, int position) {
- String src = mSrcList.get(position);
- Glide.with(mContext)
- .asBitmap()
- .load(src)
- .placeholder(R.drawable.ic_place_holder)
- .transform(new GlideCircleWithBorder(mContext))
- .into(holder.imageView);
- }
-
- @Override
- public int getItemCount() {
- return mSrcList.size();
- }
-
- public static class ImageViewHolder extends RecyclerView.ViewHolder {
- ImageView imageView;
-
- public ImageViewHolder(View itemView) {
- super(itemView);
- imageView = itemView.findViewById(R.id.item_iv);
- }
- }
-
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/base/BaseActivity.java b/app/src/main/java/com/uiuipad/appstore/base/BaseActivity.java
index 05a8c4d..130cce8 100644
--- a/app/src/main/java/com/uiuipad/appstore/base/BaseActivity.java
+++ b/app/src/main/java/com/uiuipad/appstore/base/BaseActivity.java
@@ -1,32 +1,41 @@
package com.uiuipad.appstore.base;
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.Color;
-import android.os.Build;
import android.os.Bundle;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
+import androidx.annotation.CallSuper;
+import androidx.annotation.CheckResult;
+import androidx.annotation.ContentView;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
+import com.trello.rxlifecycle4.LifecycleProvider;
+import com.trello.rxlifecycle4.LifecycleTransformer;
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
import com.uiuipad.appstore.R;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
-import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.subjects.BehaviorSubject;
-
-public abstract class BaseActivity extends AppCompatActivity {
+public abstract class BaseActivity extends AppCompatActivity implements LifecycleProvider {
+ public final BehaviorSubject lifecycleSubject = BehaviorSubject.create();
@Override
- protected void onCreate(Bundle savedInstanceState) {
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-// requestWindowFeature(Window.FEATURE_NO_TITLE);
-// if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
-// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
-// }
+ lifecycleSubject.onNext(ActivityEvent.CREATE);
+ setBar();
+ //状态栏改变放在setContentView前后有所不同
+ setContentView(this.getLayoutId());
+ initView();
+ initData();
+ }
+
+ private void setBar() {
UltimateBarX.statusBar(this)
.transparent()
.colorRes(R.color.colorPrimaryDark)
@@ -37,119 +46,87 @@ public abstract class BaseActivity extends AppCompatActivity {
.colorRes(R.color.colorPrimaryDark)
.light(true)
.apply();
- setContentView(setLayoutResourceID());
- initView();
- setListener();
- initData();
- }
-
- protected abstract int setLayoutResourceID();
-
- protected abstract void initView();
-
- protected abstract void initData();
-
- protected abstract void setListener();
-
-// @Override
-// public void onWindowFocusChanged(boolean hasFocus) {
-// super.onWindowFocusChanged(hasFocus);
-// if (hasFocus) {
-// initViewFull(this);
-// }
-// }
-
- protected void setStatusBar() {
- //这里做了两件事情,1.使状态栏透明并使contentView填充到状态栏 2.预留出状态栏的位置,防止界面上的控件离顶部靠的太近。这样就可以实现开头说的第二种情况的沉浸式状态栏了
- setTransparent(this);
}
/**
- * 设置状态栏全透明
- *
- * @param activity 需要设置的activity
+ * 设置布局
*/
- public static void setTransparent(Activity activity) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
- return;
- }
- transparentStatusBar(activity);
- setRootView(activity);
+ public abstract int getLayoutId();
+
+ /**
+ * 初始化视图
+ */
+ public abstract void initView();
+
+
+ /**
+ * 初始化数据
+ */
+ public abstract void initData();
+
+
+ public BaseActivity() {
+ super();
}
+
+ @ContentView
+ public BaseActivity(@LayoutRes int contentLayoutId) {
+ super(contentLayoutId);
+ }
+
@Override
- protected void attachBaseContext(Context newBase) {
- super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
- }
- /**
- * 使状态栏透明
- */
- @TargetApi(Build.VERSION_CODES.KITKAT)
- private static void transparentStatusBar(Activity activity) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
-// activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- //需要设置这个flag contentView才能延伸到状态栏
-// activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- //状态栏覆盖在contentView上面,设置透明使contentView的背景透出来
- activity.getWindow().setStatusBarColor(Color.BLACK);
- } else {
- //让contentView延伸到状态栏并且设置状态栏颜色透明
- activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- }
+ @NonNull
+ @CheckResult
+ public final Observable lifecycle() {
+ return lifecycleSubject.hide();
}
- /**
- * 设置根布局参数
- */
- private static void setRootView(Activity activity) {
- ViewGroup parent = activity.findViewById(android.R.id.content);
- for (int i = 0, count = parent.getChildCount(); i < count; i++) {
- View childView = parent.getChildAt(i);
- if (childView instanceof ViewGroup) {
- childView.setFitsSystemWindows(true);
- ((ViewGroup) childView).setClipToPadding(true);
- }
- }
+ @Override
+ @NonNull
+ @CheckResult
+ public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) {
+ return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
}
- public static void initViewFull(final Activity activity) {
- activity.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
- @Override
- public void onSystemUiVisibilityChange(int visibility) {
- new Thread() {
- @Override
- public void run() {
- super.run();
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- activity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- try {
- initViewFull(activity);
- } catch (Exception e) {
-
- }
- }
- });
- }
- }.start();
- }
- });
- //设置无标题
- activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- activity.getWindow().getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
- | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
- | View.SYSTEM_UI_FLAG_IMMERSIVE
- );
+ @Override
+ @NonNull
+ @CheckResult
+ public final LifecycleTransformer bindToLifecycle() {
+ return RxLifecycleAndroid.bindActivity(lifecycleSubject);
}
+ @Override
+ @CallSuper
+ protected void onStart() {
+ super.onStart();
+ lifecycleSubject.onNext(ActivityEvent.START);
+ }
+
+ @Override
+ @CallSuper
+ protected void onResume() {
+ super.onResume();
+ lifecycleSubject.onNext(ActivityEvent.RESUME);
+ }
+
+ @Override
+ @CallSuper
+ protected void onPause() {
+ lifecycleSubject.onNext(ActivityEvent.PAUSE);
+ super.onPause();
+ }
+
+ @Override
+ @CallSuper
+ protected void onStop() {
+ lifecycleSubject.onNext(ActivityEvent.STOP);
+ super.onStop();
+ }
+
+ @Override
+ @CallSuper
+ protected void onDestroy() {
+ lifecycleSubject.onNext(ActivityEvent.DESTROY);
+ super.onDestroy();
+ }
}
diff --git a/app/src/main/java/com/uiuipad/appstore/base/BaseFragment.java b/app/src/main/java/com/uiuipad/appstore/base/BaseFragment.java
index 0279b81..51d46aa 100644
--- a/app/src/main/java/com/uiuipad/appstore/base/BaseFragment.java
+++ b/app/src/main/java/com/uiuipad/appstore/base/BaseFragment.java
@@ -1,86 +1,147 @@
package com.uiuipad.appstore.base;
-import android.content.Context;
import android.os.Bundle;
-
import android.view.View;
+import androidx.annotation.CallSuper;
+import androidx.annotation.CheckResult;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
-import com.uiuipad.appstore.utils.LogUtils;
+import com.trello.rxlifecycle4.LifecycleProvider;
+import com.trello.rxlifecycle4.LifecycleTransformer;
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.FragmentEvent;
+import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
-/**
- * Created by asus on 2017/8/4.
- */
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.subjects.BehaviorSubject;
-public class BaseFragment extends Fragment {
+public abstract class BaseFragment extends Fragment implements LifecycleProvider {
+ public final BehaviorSubject lifecycleSubject = BehaviorSubject.create();
+
+ protected boolean isViewInitiated;
+ protected boolean isVisibleToUser;
+ protected boolean isDataInitiated;
- private static final String TAG = "BaseFragment";
-
@Override
- public void onAttach(Context context) {
- super.onAttach(context);
- LogUtils.d(TAG, "onAttach: ");
+ @NonNull
+ @CheckResult
+ public final Observable lifecycle() {
+ return lifecycleSubject.hide();
}
@Override
+ @NonNull
+ @CheckResult
+ public final LifecycleTransformer bindUntilEvent(@NonNull FragmentEvent event) {
+ return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
+ }
+
+ @Override
+ @NonNull
+ @CheckResult
+ public final LifecycleTransformer bindToLifecycle() {
+ return RxLifecycleAndroid.bindFragment(lifecycleSubject);
+ }
+
+ @Override
+ @CallSuper
+ public void onAttach(android.app.Activity activity) {
+ super.onAttach(activity);
+ lifecycleSubject.onNext(FragmentEvent.ATTACH);
+ }
+
+ @Override
+ @CallSuper
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- LogUtils.d(TAG, "onCreate: ");
+ lifecycleSubject.onNext(FragmentEvent.CREATE);
}
@Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ isViewInitiated = true;
+ prepareFetchData();
+ }
+
+ @Override
+ public void setUserVisibleHint(boolean isVisibleToUser) {
+ super.setUserVisibleHint(isVisibleToUser);
+ this.isVisibleToUser = isVisibleToUser;
+ prepareFetchData();
+ }
+
+ public abstract void fetchData();
+
+ public boolean prepareFetchData() {
+ return prepareFetchData(false);
+ }
+
+ public boolean prepareFetchData(boolean forceUpdate) {
+ if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) {
+ fetchData();
+ isDataInitiated = true;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ @CallSuper
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- LogUtils.d(TAG, "onViewCreated: ");
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- LogUtils.d(TAG, "onActivityCreated: ");
+ lifecycleSubject.onNext(FragmentEvent.CREATE_VIEW);
}
@Override
+ @CallSuper
public void onStart() {
super.onStart();
- LogUtils.d(TAG, "onStart: ");
+ lifecycleSubject.onNext(FragmentEvent.START);
}
@Override
+ @CallSuper
public void onResume() {
super.onResume();
- LogUtils.d(TAG, "onResume: ");
+ lifecycleSubject.onNext(FragmentEvent.RESUME);
}
@Override
+ @CallSuper
public void onPause() {
+ lifecycleSubject.onNext(FragmentEvent.PAUSE);
super.onPause();
- LogUtils.d(TAG, "onPause: ");
}
@Override
+ @CallSuper
public void onStop() {
+ lifecycleSubject.onNext(FragmentEvent.STOP);
super.onStop();
- LogUtils.d(TAG, "onStop: ");
}
@Override
+ @CallSuper
public void onDestroyView() {
+ lifecycleSubject.onNext(FragmentEvent.DESTROY_VIEW);
super.onDestroyView();
- LogUtils.d(TAG, "onDestroyView: ");
}
@Override
+ @CallSuper
public void onDestroy() {
+ lifecycleSubject.onNext(FragmentEvent.DESTROY);
super.onDestroy();
- LogUtils.d(TAG, "onDestroy: ");
}
@Override
+ @CallSuper
public void onDetach() {
+ lifecycleSubject.onNext(FragmentEvent.DETACH);
super.onDetach();
- LogUtils.d(TAG, "onDetach: ");
}
}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/BaseResponse.java b/app/src/main/java/com/uiuipad/appstore/base/BaseResponse.java
similarity index 93%
rename from app/src/main/java/com/uiuipad/appstore/bean/BaseResponse.java
rename to app/src/main/java/com/uiuipad/appstore/base/BaseResponse.java
index d9852da..c454ad2 100644
--- a/app/src/main/java/com/uiuipad/appstore/bean/BaseResponse.java
+++ b/app/src/main/java/com/uiuipad/appstore/base/BaseResponse.java
@@ -1,4 +1,4 @@
-package com.uiuipad.appstore.bean;
+package com.uiuipad.appstore.base;
import androidx.annotation.NonNull;
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/AdminAppInfo.java b/app/src/main/java/com/uiuipad/appstore/bean/AdminAppInfo.java
new file mode 100644
index 0000000..25e4554
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/bean/AdminAppInfo.java
@@ -0,0 +1,173 @@
+package com.uiuipad.appstore.bean;
+
+import androidx.annotation.NonNull;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParser;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class AdminAppInfo implements Serializable {
+ private static final long serialVersionUID = -9178218597906895330L;
+
+ long id;
+ String app_name;
+ String app_package;
+ String app_version_name;
+ long app_version_code;
+ long app_size;
+ String app_url;
+ String app_icon;
+ String app_md5;
+ float app_score;
+ String app_developer;
+ int is_promote;
+ int use_type;
+ int is_autodown;
+ String app_remarks;
+ List app_preview;
+ long update_time;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getApp_name() {
+ return app_name;
+ }
+
+ public void setApp_name(String app_name) {
+ this.app_name = app_name;
+ }
+
+ public String getApp_package() {
+ return app_package;
+ }
+
+ public void setApp_package(String app_package) {
+ this.app_package = app_package;
+ }
+
+ public String getApp_version_name() {
+ return app_version_name;
+ }
+
+ public void setApp_version_name(String app_version_name) {
+ this.app_version_name = app_version_name;
+ }
+
+ public long getApp_version_code() {
+ return app_version_code;
+ }
+
+ public void setApp_version_code(long app_version_code) {
+ this.app_version_code = app_version_code;
+ }
+
+ public long getApp_size() {
+ return app_size;
+ }
+
+ public void setApp_size(long app_size) {
+ this.app_size = app_size;
+ }
+
+ public String getApp_url() {
+ return app_url;
+ }
+
+ public void setApp_url(String app_url) {
+ this.app_url = app_url;
+ }
+
+ public String getApp_icon() {
+ return app_icon;
+ }
+
+ public void setApp_icon(String app_icon) {
+ this.app_icon = app_icon;
+ }
+
+ public String getApp_md5() {
+ return app_md5;
+ }
+
+ public void setApp_md5(String app_md5) {
+ this.app_md5 = app_md5;
+ }
+
+ public float getApp_score() {
+ return app_score;
+ }
+
+ public void setApp_score(float app_score) {
+ this.app_score = app_score;
+ }
+
+ public String getApp_developer() {
+ return app_developer;
+ }
+
+ public void setApp_developer(String app_developer) {
+ this.app_developer = app_developer;
+ }
+
+ public int getIs_promote() {
+ return is_promote;
+ }
+
+ public void setIs_promote(int is_promote) {
+ this.is_promote = is_promote;
+ }
+
+ public int getUse_type() {
+ return use_type;
+ }
+
+ public void setUse_type(int use_type) {
+ this.use_type = use_type;
+ }
+
+ public int getIs_autodown() {
+ return is_autodown;
+ }
+
+ public void setIs_autodown(int is_autodown) {
+ this.is_autodown = is_autodown;
+ }
+
+ public String getApp_remarks() {
+ return app_remarks;
+ }
+
+ public void setApp_remarks(String app_remarks) {
+ this.app_remarks = app_remarks;
+ }
+
+ public List getApp_preview() {
+ return app_preview;
+ }
+
+ public void setApp_preview(List app_preview) {
+ this.app_preview = app_preview;
+ }
+
+ public long getUpdate_time() {
+ return update_time;
+ }
+
+ public void setUpdate_time(long update_time) {
+ this.update_time = update_time;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
+ }
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/AppClassBean.java b/app/src/main/java/com/uiuipad/appstore/bean/AppClassBean.java
index 930c9d9..0d08005 100644
--- a/app/src/main/java/com/uiuipad/appstore/bean/AppClassBean.java
+++ b/app/src/main/java/com/uiuipad/appstore/bean/AppClassBean.java
@@ -6,7 +6,7 @@ public class AppClassBean implements Serializable {
private static final long serialVersionUID = -6605991530026729506L;
int id;
String name;
- String img_url;
+ String img;
public int getId() {
return id;
@@ -24,11 +24,11 @@ public class AppClassBean implements Serializable {
this.name = name;
}
- public String getImg_url() {
- return img_url;
+ public String getImg() {
+ return img;
}
- public void setImg_url(String img_url) {
- this.img_url = img_url;
+ public void setImg(String img) {
+ this.img = img;
}
}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/AppDateInfo.java b/app/src/main/java/com/uiuipad/appstore/bean/AppDateInfo.java
deleted file mode 100644
index 2a7763c..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/AppDateInfo.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import java.io.Serializable;
-
-/**
- * Created by Administrator on 2016/10/9.
- */
-public class AppDateInfo implements Serializable {
-
- public String id;
- public String app_name;
- public String app_package;
- public String app_version_name;
- public String app_desc;
- public String app_downloads;
- public String app_size;
- public String app_img;
- public String app_url;
- public String app_createtime;
- public String app_score;
- public String xitong_id;
- public String zixitong_id;
- public String app_tag;
-
- public String getType() {
- return app_tag;
- }
-
- public void setType(String type) {
- this.app_tag = type;
- }
-
- public String getXitong_id() {
- return xitong_id;
- }
-
- public void setXitong_id(String xitong_id) {
- this.xitong_id = xitong_id;
- }
-
- public String getZixitong_id() {
- return zixitong_id;
- }
-
- public void setZixitong_id(String zixitong_id) {
- this.zixitong_id = zixitong_id;
- }
-
- public String getApp_down() {
- return app_downloads;
- }
-
- public void setApp_down(String app_down) {
- this.app_downloads = app_down;
- }
-
- public String getApp_desc() {
- return app_desc;
- }
-
- public void setApp_desc(String app_desc) {
- this.app_desc = app_desc;
- }
-
- public String getApp_pfen() {
- return app_score;
- }
-
- public void setApp_pfen(String app_pfen) {
- this.app_score = app_pfen;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getApp_name() {
- return app_name;
- }
-
- public void setApp_name(String app_name) {
- this.app_name = app_name;
- }
-
- public String getApp_baoming() {
- return app_package;
- }
-
- public void setApp_baoming(String app_baoming) {
- this.app_package = app_baoming;
- }
-
- public String getApp_banben() {
- return app_version_name;
- }
-
- public void setApp_banben(String app_banben) {
- this.app_version_name = app_banben;
- }
-
- public String getApp_size() {
- return app_size;
- }
-
- public void setApp_size(String app_size) {
- this.app_size = app_size;
- }
-
- public String getApp_img() {
- return app_img;
- }
-
- public void setApp_img(String app_img) {
- this.app_img = app_img;
- }
-
- public String getApp_title() {
- return app_desc;
- }
-
- public void setApp_title(String app_tag) {
- this.app_desc = app_tag;
- }
-
- public String getApp_file() {
- return app_url;
- }
-
- public void setApp_file(String app_file) {
- this.app_url = app_file;
- }
-
- public String getApp_time() {
- return app_createtime;
- }
-
- public void setApp_time(String app_time) {
- this.app_createtime = app_time;
- }
-
- @Override
- public String toString() {
- return "AppDateInfo{" +
- "id='" + id + '\'' +
- ", app_name='" + app_name + '\'' +
- ", app_package='" + app_package + '\'' +
- ", app_version_name='" + app_version_name + '\'' +
- ", app_desc='" + app_desc + '\'' +
- ", app_downloads='" + app_downloads + '\'' +
- ", app_size='" + app_size + '\'' +
- ", app_img='" + app_img + '\'' +
- ", app_url='" + app_url + '\'' +
- ", app_createtime='" + app_createtime + '\'' +
- ", app_score='" + app_score + '\'' +
- ", xitong_id='" + xitong_id + '\'' +
- ", zixitong_id='" + zixitong_id + '\'' +
- ", app_tag='" + app_tag + '\'' +
- '}';
- }
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/AppDownloadInfo.java b/app/src/main/java/com/uiuipad/appstore/bean/AppDownloadInfo.java
deleted file mode 100644
index f768e4b..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/AppDownloadInfo.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import java.io.Serializable;
-
-/**
- * Created by Administrator on 2016/10/9.
- */
-public class AppDownloadInfo implements Serializable {
-
- private String url; //文件URL
- private String targetPath; //保存文件地址
- private String fileName; //保存的文件名
- private float progress; //下载进度
- private int state; //当前状态
- private long totalLength; //总大小
- private long downloadLength; //已下载大小
- private String packageName; //保存的包名
- public String version;; //版本信息
- private Serializable data; //额外的数据
-
- @Override
- public boolean equals(Object obj) {
- AppDownloadInfo info = (AppDownloadInfo) obj;
- return url.equals(info.getUrl()) && packageName.equals(info.packageName);
- }
-
- @Override
- public int hashCode() {
- String str = url + packageName;
- return str.hashCode();
- }
-
- public Serializable getData() {
- return data;
- }
-
- public void setData(Serializable data) {
- this.data = data;
- }
-
- public AppDownloadInfo() {
- super();
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getPackageName() {
- return packageName;
- }
-
- public void setPackageName(String packageName) {
- this.packageName = packageName;
- }
-
- public long getTotalLength() {
- return totalLength;
- }
-
- public void setTotalLength(long totalLength) {
- this.totalLength = totalLength;
- }
-
- public long getDownloadLength() {
- return downloadLength;
- }
-
- public void setDownloadLength(long downloadLength) {
- this.downloadLength = downloadLength;
- }
-
- public int getState() {
- return state;
- }
-
- public void setState(int state) {
- this.state = state;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getTargetPath() {
- return targetPath;
- }
-
- public void setTargetPath(String targetPath) {
- this.targetPath = targetPath;
- }
-
- public String getFileName() {
- return fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public float getProgress() {
- return progress;
- }
-
- public void setProgress(float progress) {
- this.progress = progress;
- }
-
-
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/AppInfos.java b/app/src/main/java/com/uiuipad/appstore/bean/AppInfos.java
deleted file mode 100644
index f79f1a6..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/AppInfos.java
+++ /dev/null
@@ -1,285 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by asus on 2017/10/23.
- */
-
-public class AppInfos implements Parcelable {
- String appName;//名字
- String icon;//图片
- String detailUrl;//详情页面
- String downLoadUrl;//下载地址
-
- String company;//公司
- double star;//星星的等级
- String size;//软件的大小
- String version;//软件的版本号
- String packageName;//软件的包名
- String updateTime;//软件的更新时间
-
- List imgs;//软件的几张缩略图
- String description;//软件的功能介绍
- String updateLog;//软件的更新日志
-
- String commentNum;//评分的人数
- String category;//软件的类别
- List permissionList;//所需要的权限
-
- ArrayList sameAppList;//同个开发者的应用
-
- boolean isInstall = false;//是否已安装
- boolean isUpdate = false;//是否需要升级
-
-
- public AppInfos() {
- }
-
- protected AppInfos(Parcel in) {
- appName = in.readString();
- icon = in.readString();
- detailUrl = in.readString();
- downLoadUrl = in.readString();
- company = in.readString();
- star = in.readDouble();
- size = in.readString();
- version = in.readString();
- packageName = in.readString();
- updateTime = in.readString();
- imgs = in.createStringArrayList();
- description = in.readString();
- updateLog = in.readString();
- commentNum = in.readString();
- category = in.readString();
- permissionList = in.createStringArrayList();
- sameAppList = in.createTypedArrayList(AppInfos.CREATOR);
- isInstall = in.readByte() != 0;
- isUpdate = in.readByte() != 0;
- }
-
- public static final Creator CREATOR = new Creator() {
- @Override
- public AppInfos createFromParcel(Parcel in) {
- return new AppInfos(in);
- }
-
- @Override
- public AppInfos[] newArray(int size) {
- return new AppInfos[size];
- }
- };
-
- public ArrayList getSameAppList() {
- return sameAppList;
- }
-
- public void setSameAppList(ArrayList sameAppList) {
- this.sameAppList = sameAppList;
- }
-
-
-
-
- public boolean isInstall() {
- return isInstall;
- }
-
- public void setInstall(boolean install) {
- isInstall = install;
- }
-
- public boolean isUpdate() {
- return isUpdate;
- }
-
- public void setUpdate(boolean update) {
- isUpdate = update;
- }
-
-
- public String getAppName() {
- return appName;
- }
-
- public void setAppName(String appName) {
- this.appName = appName;
- }
-
- public String getIcon() {
- return icon;
- }
-
- public void setIcon(String icon) {
- this.icon = icon;
- }
-
- public String getDetailUrl() {
- return detailUrl;
- }
-
- public void setDetailUrl(String detailUrl) {
- this.detailUrl = detailUrl;
- }
-
- public String getDownLoadUrl() {
- return downLoadUrl;
- }
-
- public void setDownLoadUrl(String downLoadUrl) {
- this.downLoadUrl = downLoadUrl;
- }
-
- public String getCompany() {
- return company;
- }
-
- public void setCompany(String company) {
- this.company = company;
- }
-
- public double getStar() {
- return star;
- }
-
- public String getPackageName() {
- return packageName;
- }
-
- public void setPackageName(String packageName) {
- this.packageName = packageName;
- }
-
- public void setStar(double star) {
- this.star = star;
- }
-
- public String getSize() {
- return size;
- }
-
- public void setSize(String size) {
- this.size = size;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(String updateTime) {
- this.updateTime = updateTime;
- }
-
- public List getImgs() {
- return imgs;
- }
-
- public void setImgs(List imgs) {
- this.imgs = imgs;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getUpdateLog() {
- return updateLog;
- }
-
- public void setUpdateLog(String updateLog) {
- this.updateLog = updateLog;
- }
-
- public String getCommentNum() {
- return commentNum;
- }
-
- public void setCommentNum(String commentNum) {
- this.commentNum = commentNum;
- }
-
- public String getCategory() {
- return category;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public List getPermissionList() {
- return permissionList;
- }
-
- public void setPermissionList(List permissionList) {
- this.permissionList = permissionList;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
-
- dest.writeString(appName);
- dest.writeString(icon);
- dest.writeString(detailUrl);
- dest.writeString(downLoadUrl);
- dest.writeString(company);
- dest.writeDouble(star);
- dest.writeString(size);
- dest.writeString(version);
- dest.writeString(packageName);
- dest.writeString(updateTime);
- dest.writeStringList(imgs);
- dest.writeString(description);
- dest.writeString(updateLog);
- dest.writeString(commentNum);
- dest.writeString(category);
- dest.writeStringList(permissionList);
- dest.writeTypedList(sameAppList);
- dest.writeByte((byte) (isInstall ? 1 : 0));
- dest.writeByte((byte) (isUpdate ? 1 : 0));
- }
-
- @Override
- public String toString() {
- return "AppInfo{" +
- "appName='" + appName + '\'' +
- ", ic_app='" + icon + '\'' +
- ", detailUrl='" + detailUrl + '\'' +
- ", downLoadUrl='" + downLoadUrl + '\'' +
- ", company='" + company + '\'' +
- ", star=" + star +
- ", size='" + size + '\'' +
- ", version='" + version + '\'' +
- ", packageName='" + packageName + '\'' +
- ", updateTime='" + updateTime + '\'' +
- ", imgs=" + imgs +
- ", description='" + description + '\'' +
- ", updateLog='" + updateLog + '\'' +
- ", commentNum='" + commentNum + '\'' +
- ", category='" + category + '\'' +
- ", permissionList=" + permissionList +
- ", isInstall=" + isInstall +
- ", isUpdate=" + isUpdate +
- '}';
- }
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/Banner.java b/app/src/main/java/com/uiuipad/appstore/bean/Banner.java
deleted file mode 100644
index fc8112f..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/Banner.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import java.io.Serializable;
-
-public class Banner implements Serializable {
- private static final long serialVersionUID = 7293116155788824676L;
-
- private String banner_name;
- private String banner_img;
- private String vertical_img;
-
- public String getVertical_img() {
- return vertical_img;
- }
-
- public void setVertical_img(String vertical_img) {
- this.vertical_img = vertical_img;
- }
-
- public String getBanner_name() {
- return banner_name;
- }
-
- public void setBanner_name(String banner_name) {
- this.banner_name = banner_name;
- }
-
- public String getBanner_img() {
- return banner_img;
- }
-
- public void setBanner_img(String banner_img) {
- this.banner_img = banner_img;
- }
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/BannerImage.java b/app/src/main/java/com/uiuipad/appstore/bean/BannerImage.java
deleted file mode 100644
index 4d289d1..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/BannerImage.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import java.io.Serializable;
-
-public class BannerImage implements Serializable {
- String title;
- String id;
- String desc;
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getDesc() {
- return desc;
- }
-
- public void setDesc(String desc) {
- this.desc = desc;
- }
-
- public String getImg() {
- return img;
- }
-
- public void setImg(String img) {
- this.img = img;
- }
-
- String img;
-
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/BatchID.java b/app/src/main/java/com/uiuipad/appstore/bean/BatchID.java
deleted file mode 100644
index dbe5aa7..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/BatchID.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import androidx.annotation.NonNull;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonParser;
-
-import java.io.Serializable;
-
-public class BatchID implements Serializable {
- private static final long serialVersionUID = -2320968190625923242L;
-
- String batch_id;
-
- public String getBatch_id() {
- return batch_id;
- }
-
- public void setBatch_id(String batch_id) {
- this.batch_id = batch_id;
- }
-
- @NonNull
- @Override
- public String toString() {
- return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
- }
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/ImageUrl.java b/app/src/main/java/com/uiuipad/appstore/bean/ImageUrl.java
deleted file mode 100644
index 9be8c89..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/ImageUrl.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.uiuipad.appstore.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/uiuipad/appstore/bean/Kind.java b/app/src/main/java/com/uiuipad/appstore/bean/Kind.java
deleted file mode 100644
index a8f78b1..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/Kind.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-/**
- * Created by asus on 2017/10/25.
- */
-
-public class Kind {
- String name;//每个种类的名字
- int category;//种类的代号
- int icon;//图片的id
- int hide;//隐藏显示 1是0否
-
- public Kind(String name, int category, int icon, int hide) {
- this.name = name;
- this.category = category;
- this.icon = icon;
- this.hide = hide;
- }
-
- public int getIcon() {
- return icon;
- }
-
- public void setIcon(int icon) {
- this.icon = icon;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getCategory() {
- return category;
- }
-
- public void setCategory(int category) {
- this.category = category;
- }
-
- public int getHide() {
- return hide;
- }
-
- public void setHide(int hide) {
- this.hide = hide;
- }
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/bean/UserInfo.java b/app/src/main/java/com/uiuipad/appstore/bean/UserInfo.java
deleted file mode 100644
index c21b9c4..0000000
--- a/app/src/main/java/com/uiuipad/appstore/bean/UserInfo.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.uiuipad.appstore.bean;
-
-import java.io.Serializable;
-
-public class UserInfo implements Serializable {
-
- private static final long serialVersionUID = -5268233433601073239L;
-
- private int id;
- private String sn_value;
- private String sn_name;
- private String sn_phone;
- private String grade;
- private String sn_app;
- private String sn_area;
- private int admin_id;
- private String is_delete;
- private String is_reset;
- private String is_lock;
- private String school;
- private String createtime;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getSn_value() {
- return sn_value;
- }
-
- public void setSn_value(String sn_value) {
- this.sn_value = sn_value;
- }
-
- public String getSn_name() {
- return sn_name;
- }
-
- public void setSn_name(String sn_name) {
- this.sn_name = sn_name;
- }
-
- public String getSn_phone() {
- return sn_phone;
- }
-
- public void setSn_phone(String sn_phone) {
- this.sn_phone = sn_phone;
- }
-
- public String getGrade() {
- return grade;
- }
-
- public void setGrade(String grade) {
- this.grade = grade;
- }
-
- public String getSn_app() {
- return sn_app;
- }
-
- public void setSn_app(String sn_app) {
- this.sn_app = sn_app;
- }
-
- public String getSn_area() {
- return sn_area;
- }
-
- public void setSn_area(String sn_area) {
- this.sn_area = sn_area;
- }
-
- public int getAdmin_id() {
- return admin_id;
- }
-
- public void setAdmin_id(int admin_id) {
- this.admin_id = admin_id;
- }
-
- public String getIs_delete() {
- return is_delete;
- }
-
- public void setIs_delete(String is_delete) {
- this.is_delete = is_delete;
- }
-
- public String getIs_reset() {
- return is_reset;
- }
-
- public void setIs_reset(String is_reset) {
- this.is_reset = is_reset;
- }
-
- public String getIs_lock() {
- return is_lock;
- }
-
- public void setIs_lock(String is_lock) {
- this.is_lock = is_lock;
- }
-
- public String getCreatetime() {
- return createtime;
- }
-
- 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/uiuipad/appstore/fragment/FeaturedFragment.java b/app/src/main/java/com/uiuipad/appstore/fragment/FeaturedFragment.java
deleted file mode 100644
index e8bfc9c..0000000
--- a/app/src/main/java/com/uiuipad/appstore/fragment/FeaturedFragment.java
+++ /dev/null
@@ -1,751 +0,0 @@
-package com.uiuipad.appstore.fragment;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.recyclerview.widget.SimpleItemAnimator;
-
-import com.blankj.utilcode.util.ScreenUtils;
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
-import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
-import com.bumptech.glide.request.target.CustomTarget;
-import com.bumptech.glide.request.transition.Transition;
-import com.scwang.smartrefresh.layout.SmartRefreshLayout;
-import com.uiuipad.appstore.R;
-import com.uiuipad.appstore.activity.ClassAppActivity;
-import com.uiuipad.appstore.activity.MoreAppActivity;
-import com.uiuipad.appstore.adapter.AppAdapter;
-import com.uiuipad.appstore.adapter.BannerViewHolder;
-import com.uiuipad.appstore.base.LazyLoadFragment;
-import com.uiuipad.appstore.base.RefreshManager;
-import com.uiuipad.appstore.bean.AppClassBean;
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.Banner;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.bean.ImageUrl;
-import com.uiuipad.appstore.common.CommonConfig;
-import com.uiuipad.appstore.network.NetInterfaceManager;
-import com.uiuipad.appstore.utils.DensityUtil;
-import com.uiuipad.appstore.utils.LogUtils;
-import com.uiuipad.appstore.utils.ToastUtil;
-import com.uiuipad.appstore.utils.Utils;
-import com.zhpan.bannerview.BannerViewPager;
-import com.zhpan.bannerview.constants.IndicatorSlideMode;
-import com.zhpan.bannerview.constants.PageStyle;
-import com.zhpan.bannerview.holder.HolderCreator;
-import com.zhpan.bannerview.utils.BannerUtils;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
-import io.reactivex.rxjava3.annotations.NonNull;
-import io.reactivex.rxjava3.core.Observer;
-import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.schedulers.Schedulers;
-
-/**
- * Created by asus on 2017/10/23.
- * 精品的页面
- */
-
-public class FeaturedFragment extends LazyLoadFragment implements RefreshManager.RefreshInterface {
- private static final String TAG = FeaturedFragment.class.getSimpleName();
-
- @BindView(R.id.featured_refresh_layout)
- SmartRefreshLayout mRefreshLayout;
- @BindView(R.id.cl)
- ConstraintLayout cl;
- @BindView(R.id.iv_banner)
- ImageView iv_banner;
- @BindView(R.id.banner_view)
- BannerViewPager mViewPager;
-
- @BindView(R.id.cl_exclusive)
- ConstraintLayout cl_exclusive;
- @BindView(R.id.tv_exclusive_app)
- TextView tv_exclusive_app;
- @BindView(R.id.rv_exclusive)
- RecyclerView rv_exclusive;
- @BindView(R.id.iv_exclusive_nodata)
- ImageView iv_exclusive_nodata;
-
- @BindView(R.id.cl_popular)
- ConstraintLayout cl_popular;
- @BindView(R.id.tv_popular_app)
- TextView tv_popular_app;
- @BindView(R.id.rv_popular)
- RecyclerView rv_popular;
- @BindView(R.id.iv_popular_nodata)
- ImageView iv_popular_nodata;
-
- @BindView(R.id.cl_0)
- ConstraintLayout cl_0;
- @BindView(R.id.cl_1)
- ConstraintLayout cl_1;
- @BindView(R.id.cl_2)
- ConstraintLayout cl_2;
- @BindView(R.id.cl_3)
- ConstraintLayout cl_3;
- @BindView(R.id.cl_4)
- ConstraintLayout cl_4;
- @BindView(R.id.cl_5)
- ConstraintLayout cl_5;
-
- @BindView(R.id.iv_0)
- ImageView iv_0;
- @BindView(R.id.iv_1)
- ImageView iv_1;
- @BindView(R.id.iv_2)
- ImageView iv_2;
- @BindView(R.id.iv_3)
- ImageView iv_3;
- @BindView(R.id.iv_4)
- ImageView iv_4;
- @BindView(R.id.iv_5)
- ImageView iv_5;
-
- private Context mContext;
- private AppAdapter mExclusiveAppAdapter;
- private AppAdapter mPopularAppAdapter;
- private List mAppClassList;
-
- public static final String EXCLUSIVE_APP = "专属应用";
- public static final String POPULAR_APP = "热门应用";
-
- public FeaturedFragment() {
-
- }
-
- @Override
- public void onRefresh() {
- mRefreshLayout.autoRefresh();
- }
-
- @Override
- public void onLoadBitMap(boolean isLoad) {
- }
-
- @Override
- public int getLayoutId() {
- return R.layout.fragment_featured;
- }
-
- @Override
- public void initViews(View view) {
- ButterKnife.bind(this, view);
- mContext = view.getContext();
- ((SimpleItemAnimator) rv_popular.getItemAnimator()).setSupportsChangeAnimations(false);
- setImageViewSize();
- RefreshManager.getInstance().register(this);
- mRefreshLayout.setEnableLoadMore(false);
- mRefreshLayout.setEnableRefresh(true);
- mRefreshLayout.setOnRefreshListener(refreshlayout -> initAPPData());
- mRefreshLayout.autoRefresh();
- mViewPager.setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
- .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);
- cl_0.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openAppClass(0);
- }
- });
- cl_1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openAppClass(1);
- }
- });
- cl_2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openAppClass(2);
- }
- });
- cl_3.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openAppClass(3);
- }
- });
- cl_4.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openAppClass(4);
- }
- });
- cl_5.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-// startActivity(new Intent(getActivity(), ManagerAppActivity.class));
- openAppClass(5);
- }
- });
- tv_exclusive_app.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(mContext, MoreAppActivity.class);
- intent.putExtra(CommonConfig.MORE_APP_TITLE, EXCLUSIVE_APP);
- startActivity(intent);
- }
- });
- tv_popular_app.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(mContext, MoreAppActivity.class);
- intent.putExtra(CommonConfig.MORE_APP_TITLE, POPULAR_APP);
- startActivity(intent);
- }
- });
- }
-
- @Override
- public void initDatas() {
- mExclusiveAppAdapter = new AppAdapter(mContext);
- mExclusiveAppAdapter.setHasStableIds(true);
- mPopularAppAdapter = new AppAdapter(mContext);
- mPopularAppAdapter.setHasStableIds(true);
-
-// int orientation = mContext.getResources().getConfiguration().orientation;
-// if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
- GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 2);
- rv_popular.setLayoutManager(gridLayoutManager);
-// } else if (orientation == Configuration.ORIENTATION_PORTRAIT) {
-// GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 2);
-// rv_popular.setLayoutManager(gridLayoutManager);
-// } else {
-// rv_popular.setLayoutManager(new LinearLayoutManager(mContext));
-// }
- rv_popular.setAdapter(mPopularAppAdapter);
-
- GridLayoutManager gridLayoutManager2 = new GridLayoutManager(mContext, 2);
- rv_exclusive.setLayoutManager(gridLayoutManager2);
- rv_exclusive.setAdapter(mExclusiveAppAdapter);
- }
-
- @Override
- public void loadData(Bundle savedInstanceState) {
-
- }
-
- @Override
- public void onConfigurationChanged(@androidx.annotation.NonNull Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
- GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 3);
- rv_popular.setLayoutManager(gridLayoutManager);
- } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
- GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 2);
- rv_popular.setLayoutManager(gridLayoutManager);
- } else {
- rv_popular.setLayoutManager(new LinearLayoutManager(mContext));
- }
- initAPPData();
- }
-
-
- @Override
- public void onResume() {
- super.onResume();
- registerReceiver();
- mExclusiveAppAdapter.notifyDataSetChanged();
- mPopularAppAdapter.notifyDataSetChanged();
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- if (myReceiver != null) {
- try {
- mContext.unregisterReceiver(myReceiver);
- } catch (Exception e) {
- LogUtils.e("onDestroy", e.getMessage());
- }
- }
- }
-
- private void registerReceiver() {
- 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);
- mContext.registerReceiver(myReceiver, filter);
- }
- }
-
- private installReceiver myReceiver;
-
- public class installReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- //接收安装广播
- if (action.equals(Intent.ACTION_PACKAGE_ADDED)
- || action.equals(Intent.ACTION_PACKAGE_REPLACED)
- || action.equals(Intent.ACTION_PACKAGE_REMOVED)) {
-// adapter.setData(checkUpdateOrInstalled(newAppInfoList));
- mPopularAppAdapter.notifyDataSetChanged();
- Log.e("installReceiver", action);
- }
-
- }
- }
-
- synchronized private void initAPPData() {
-// int setting_admin_app = Settings.System.getInt(mContext.getContentResolver(), "setting_admin_app", 1);
-// if (setting_admin_app == 0) {
- getAdminApp();
-// } else {
-// getAllAppInfo();
-// getAdminApp();
-// }
- getBanner();
- getAppClass();
- }
-
- private void getBanner() {
- NetInterfaceManager.getInstance().getBannerObservable()
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("getBanner", "onSubscribe: ");
- }
-
- @Override
- public void onNext(BaseResponse bannerBaseResponse) {
- Log.e("getBanner", "onNext: " + bannerBaseResponse);
- if (bannerBaseResponse.code == 200) {
- String banner_img = bannerBaseResponse.data.getBanner_img();
- String vertical_img = bannerBaseResponse.data.getVertical_img();
- if (ScreenUtils.isPortrait()) {
- setBannerResource(banner_img);
- } else {
- setBannerResource(vertical_img);
- }
- } else {
- if (ScreenUtils.isPortrait()) {
- setBannerResource(R.drawable.port_banner);
- } else {
- setBannerResource(R.drawable.land_banner);
- }
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("getBanner", "onError: " + e.getMessage());
-
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getBanner", "onComplete: ");
- setImageViewSize();
-// int bannerWidth = iv_banner.getWidth();
-// int bannerHeight = iv_banner.getHeight();
-// Drawable drawable = iv_banner.getDrawable();
-// if (drawable != null) {
-// int width = drawable.getMinimumWidth();
-// int height = drawable.getMinimumHeight();
-// Log.e(TAG, "getBanner: iv_banner: width = " + bannerWidth);
-// Log.e(TAG, "getBanner: iv_banner: height = " + bannerHeight);
-// Log.e(TAG, "getBanner: Drawable: width = " + width);
-// Log.e(TAG, "getBanner: Drawable: height = " + height);
-// Log.e(TAG, "getBanner: scale = " + (float) (1.0 * bannerWidth / width));
-// Log.e(TAG, "getBanner: " + (int) ((float) (1.0 * bannerWidth / width) * height));
-// int changeHeight = (int) ((double) (bannerWidth / width) * height);
-// if (changeHeight != 0) {
-// ViewGroup.LayoutParams params = iv_banner.getLayoutParams();
-// params.height = changeHeight;
-// iv_banner.setLayoutParams(params);
-//// ViewGroup.LayoutParams clParams = cl.getLayoutParams();
-//// clParams.height = changeHeight;
-//// cl.setLayoutParams(clParams);
-// Log.e(TAG, "getBanner: iv_banner: height = " + iv_banner.getHeight());
-// Log.e(TAG, "getBanner: cl: height = " + cl.getHeight());
-// }
-// iv_banner.setVisibility(View.VISIBLE);
-// }
- }
- });
- }
-
- private void setBannerResource(String url) {
- Glide.with(iv_banner)
- .load(url)
- .transition(new DrawableTransitionOptions().dontTransition())
- .transform(new RoundedCorners(DensityUtil.dpToPx(mContext, 8)))
- .into(new CustomTarget() {
- @Override
- public void onResourceReady(Drawable resource, Transition super Drawable> transition) {
- iv_banner.setImageDrawable(resource);
- }
-
- @Override
- public void onLoadCleared(@Nullable Drawable placeholder) {
-
- }
- });
- }
-
- private void setBannerResource(int resId) {
- Glide.with(iv_banner)
- .load(resId)
- .transition(new DrawableTransitionOptions().dontTransition())
- .transform(new RoundedCorners(DensityUtil.dpToPx(mContext, 8)))
- .into(new CustomTarget() {
- @Override
- public void onResourceReady(Drawable resource, Transition super Drawable> transition) {
- iv_banner.setImageDrawable(resource);
- }
-
- @Override
- public void onLoadCleared(@Nullable Drawable placeholder) {
-
- }
- });
- }
-
- private void setImageViewSize() {
- ViewGroup.LayoutParams ivParams = iv_banner.getLayoutParams();
- ViewGroup.LayoutParams clParams = cl.getLayoutParams();
- Log.e(TAG, "initView: getWidth: " + ivParams.width);
- Log.e(TAG, "initView: getHeight:" + ivParams.height);
- Log.e(TAG, "initView: getWidth: " + ivParams.width);
- Log.e(TAG, "initView: getHeight:" + ivParams.height);
- //获取屏幕宽度
- WindowManager m = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
- DisplayMetrics outMetrics = new DisplayMetrics();
- m.getDefaultDisplay().getMetrics(outMetrics);
- Log.e(TAG, "initView: widthPixels: " + outMetrics.widthPixels);
- Log.e(TAG, "initView: heightPixels: " + outMetrics.heightPixels);
-
- int screenWidth = outMetrics.widthPixels;
- int imageViewWidth = screenWidth - DensityUtil.dpToPx(mContext, 20);
- //获取屏幕像素
- Resources res = mContext.getResources();
- BitmapFactory.Options opts = new BitmapFactory.Options();
- opts.inJustDecodeBounds = true;
-// if (mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
-// //竖屏
-// BitmapFactory.decodeResource(res, R.drawable.port_banner, opts);
-// } else {
-// //横屏
-// BitmapFactory.decodeResource(res, R.drawable.land_banner, opts);
-// }
- opts.inSampleSize = 1;
- opts.inJustDecodeBounds = false;
- int w = opts.outWidth;
- int h = opts.outHeight;
- Log.e(TAG, "initView: w: " + w);
- Log.e(TAG, "initView: h: " + h);
-
- int imageViewheight = (int) ((float) (h * 1.0 / w) * imageViewWidth);
- ivParams.width = imageViewWidth;
- ivParams.height = imageViewheight;
- iv_banner.setLayoutParams(ivParams);
- clParams.height = imageViewheight;
- cl.setLayoutParams(clParams);
- Log.e(TAG, "setImageViewSize: clheight :" + cl.getHeight());
- Log.e(TAG, "setImageViewSize: imageViewheight :" + iv_banner.getHeight());
- }
-
- private void getAllAppInfo() {
- NetInterfaceManager.getInstance()
- .getQueryAllAppObservable()
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getAllAppInfo", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse> listBaseResponse) {
- Log.e("getAllAppInfo", "onNext: " + listBaseResponse);
- setExclusiveAppdata(listBaseResponse);
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getAllAppInfo", "onError: " + e.getMessage());
- setExclusiveAppError();
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getAllAppInfo", "onComplete: ");
- mRefreshLayout.finishRefresh();
- }
- });
- }
-
- private void getAdminApp() {
- NetInterfaceManager.getInstance()
- .getAdminAppByClassObservable(2)
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("getAdminApp", "onSubscribe: ");
- }
-
- @Override
- public void onNext(BaseResponse> listBaseResponse) {
- Log.e("getAdminApp", "onSubscribe: " + listBaseResponse);
- setPopularAppdata(listBaseResponse);
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("getAdminApp", "onError: " + e.getMessage());
- setPopularAppError();
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getAdminApp", "onComplete: ");
- mRefreshLayout.finishRefresh();
- }
- });
- }
-
- private void getAppClass() {
- NetInterfaceManager.getInstance().getAdminAppClassObservable()
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getAppClass", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse> listBaseResponse) {
- Log.e("getAppClass", "onNext: " + listBaseResponse);
- if (listBaseResponse.code == 200) {
- List appClassList = listBaseResponse.data;
- if (appClassList != null && appClassList.size() != 0) {
- setClass(appClassList);
- }
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getAppClass", "onError: " + e.getMessage());
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getAppClass", "onComplete: ");
- }
- });
- }
-
- private void setClass(List appClassList) {
- if (appClassList == null || appClassList.size() == 0) {
- return;
- }
- this.mAppClassList = appClassList;
- for (int i = 0; i < appClassList.size(); i++) {
- AppClassBean appClassBean = appClassList.get(i);
- int imageviewId = mContext.getResources().getIdentifier("iv_" + (i), "id", mContext.getPackageName());
- int textviewId = mContext.getResources().getIdentifier("tv_" + (i), "id", mContext.getPackageName());
- try {
- ImageView imageView = getActivity().findViewById(imageviewId);
- TextView textView = getActivity().findViewById(textviewId);
- Glide.with(mContext).load(appClassBean.getImg_url()).error(R.drawable.ic_app).into(imageView);
- textView.setText(appClassBean.getName());
- } catch (Exception e) {
- Log.e(TAG, "setClass: " + e.getMessage());
- }
- }
- }
-
- private void openAppClass(int index) {
- if (mAppClassList == null || mAppClassList.size() == 0) {
- ToastUtil.show("该分类没有应用");
- return;
- }
- AppClassBean appClassBean = mAppClassList.get(index);
- if (appClassBean == null) {
- ToastUtil.show("该分类没有应用");
- return;
- }
- int classId = appClassBean.getId();
- String className = appClassBean.getName();
- Intent intent = new Intent(getActivity(), ClassAppActivity.class);
- intent.putExtra(CommonConfig.APP_CLASS_ID, classId);
- intent.putExtra(CommonConfig.APP_CLASS_NAME, className);
- startActivity(intent);
- }
-
- private void setExclusiveAppdata(BaseResponse> listBaseResponse) {
- int code = listBaseResponse.code;
- if (code == 200) {
- List infos = listBaseResponse.data;
- if (infos.size() <= 6) {
- tv_exclusive_app.setVisibility(View.GONE);
- } else {
- tv_exclusive_app.setVisibility(View.VISIBLE);
- }
- List filterApp = infos.stream().sorted(Comparator.comparingInt(AppInfo::getWeight).reversed()).limit(6).collect(Collectors.toList());
- rv_exclusive.setVisibility(View.VISIBLE);
- iv_exclusive_nodata.setVisibility(View.GONE);
- mExclusiveAppAdapter.setData(filterApp);
- cl_exclusive.setVisibility(View.VISIBLE);
- } else {
- cl_exclusive.setVisibility(View.GONE);
- rv_exclusive.setVisibility(View.GONE);
- iv_exclusive_nodata.setImageDrawable(mContext.getDrawable(R.drawable.app_nodata));
- iv_exclusive_nodata.setVisibility(View.VISIBLE);
- }
- }
-
- private void setExclusiveAppError() {
- rv_exclusive.setVisibility(View.GONE);
- iv_exclusive_nodata.setImageDrawable(mContext.getDrawable(R.drawable.app_nonetwork));
- iv_exclusive_nodata.setVisibility(View.VISIBLE);
- }
-
- private void setPopularAppdata(BaseResponse> listBaseResponse) {
- int code = listBaseResponse.code;
- if (code == 200) {
- List infos = listBaseResponse.data;
- if (infos.size() <= 6) {
- tv_popular_app.setVisibility(View.GONE);
- } else {
- tv_popular_app.setVisibility(View.VISIBLE);
- }
- List filterApp = infos.stream().sorted(Comparator.comparingInt(AppInfo::getWeight).reversed()).limit(12).collect(Collectors.toList());
- rv_popular.setVisibility(View.VISIBLE);
- iv_popular_nodata.setVisibility(View.GONE);
- mPopularAppAdapter.setData(filterApp);
- cl_popular.setVisibility(View.VISIBLE);
- } else {
- cl_popular.setVisibility(View.GONE);
- rv_popular.setVisibility(View.GONE);
- iv_popular_nodata.setImageDrawable(mContext.getDrawable(R.drawable.app_nodata));
- iv_popular_nodata.setVisibility(View.VISIBLE);
- }
- }
-
- private void setPopularAppError() {
- rv_popular.setVisibility(View.GONE);
- iv_popular_nodata.setImageDrawable(mContext.getDrawable(R.drawable.app_nonetwork));
- iv_popular_nodata.setVisibility(View.VISIBLE);
- }
-
- private void getBannerImg() {
- NetInterfaceManager.getInstance()
- .getBannerImageControl()
- .getImageURL(Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getBannerImg", "onSubscribe: ");
- }
-
- @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);
- mViewPager.setVisibility(View.VISIBLE);
- iv_banner.setVisibility(View.GONE);
-
- } else {
- iv_banner.setVisibility(View.VISIBLE);
- mViewPager.setVisibility(View.GONE);
- }
- } else {
- iv_banner.setVisibility(View.VISIBLE);
- mViewPager.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getBannerImg", "onError: " + e.getMessage());
- iv_banner.setVisibility(View.VISIBLE);
- mViewPager.setVisibility(View.GONE);
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getBannerImg", "onComplete: ");
- mRefreshLayout.finishRefresh();
- }
- });
- }
-
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/fragment/KindFragment.java b/app/src/main/java/com/uiuipad/appstore/fragment/KindFragment.java
deleted file mode 100644
index c4277a8..0000000
--- a/app/src/main/java/com/uiuipad/appstore/fragment/KindFragment.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.uiuipad.appstore.fragment;
-
-import android.os.Bundle;
-
-import android.os.Handler;
-import android.os.Message;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.uiuipad.appstore.R;
-import com.uiuipad.appstore.adapter.KindAdapter;
-import com.uiuipad.appstore.base.BaseFragment;
-import com.uiuipad.appstore.base.RefreshManager;
-import com.uiuipad.appstore.bean.Kind;
-import com.scwang.smartrefresh.layout.SmartRefreshLayout;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * Created by asus on 2017/10/23.
- * 分类的页面
- */
-
-public class KindFragment extends BaseFragment implements RefreshManager.RefreshInterface {
- private RecyclerView mRvKind;
-
- private KindAdapter adapter;
- private List kindList;
- private SmartRefreshLayout mRefreshLayout;
-
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_kind, container, false);
- mRvKind = view.findViewById(R.id.kind_rv_kind);
- mRefreshLayout = view.findViewById(R.id.featured_refresh_layout);
- mRefreshLayout.setEnableLoadMore(false);
- mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(RefreshLayout refreshlayout) {
- initData();
- }
- });
- initView();
- initData();
- return view;
- }
-
- private void initView() {
- kindList = new ArrayList<>();
- kindList.add(new Kind("语文", 1, R.drawable.icon_language1, 1));
- kindList.add(new Kind("数学", 2, R.drawable.icon_math1, 1));
- kindList.add(new Kind("英语", 3, R.drawable.icon_english1, 1));
- kindList.add(new Kind("物理", 4, R.drawable.icon_physics1, 1));
- kindList.add(new Kind("化学", 5, R.drawable.icon_chemistry1, 1));
- kindList.add(new Kind("生物", 6, R.drawable.icon_biology1, 1));
- kindList.add(new Kind("政治", 7, R.drawable.icon_politics1, 1));
- kindList.add(new Kind("历史", 8, R.drawable.icon_history1, 1));
- kindList.add(new Kind("地理", 9, R.drawable.icon_geography1, 1));
-
- kindList.add(new Kind("娱乐", 0, R.drawable.icon_game1, 0));
-
- adapter = new KindAdapter(kindList, getContext());
- mRvKind.setAdapter(adapter);
- mRvKind.setLayoutManager(new LinearLayoutManager(getActivity()));
-
- }
-
- private void initData() {
-// OKGO.getSubClassfy(mHandler);
- }
-
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(@NonNull Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 200:
- List list = (List) msg.obj;
- showAdapter(list);
- break;
- case -200:
- hideAdapter();
- break;
- }
- mRefreshLayout.finishRefresh();
- }
- };
-
- private void showAdapter(List list) {
- if (null != list && list.size() != 0) {
- for (int i = 0; i < kindList.size() - 1; i++) {
- if (list.contains(kindList.get(i).getName())) {
- kindList.get(i).setHide(0);
- } else {
- kindList.get(i).setHide(1);
- }
- }
- }
- adapter.notifyDataSetChanged();
- }
-
- private void hideAdapter() {
- for (int i = 0; i < kindList.size() - 1; i++) {
- kindList.get(i).setHide(1);
- }
- adapter.notifyDataSetChanged();
-
- }
-
- @Override
- public void onRefresh() {
- mRefreshLayout.autoRefresh();
- }
-
- @Override
- public void onLoadBitMap(boolean isLoad) {
-
- }
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedContact.java b/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedContact.java
new file mode 100644
index 0000000..833606b
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedContact.java
@@ -0,0 +1,24 @@
+package com.uiuipad.appstore.fragment.featured;
+
+import com.uiuipad.appstore.base.BasePresenter;
+import com.uiuipad.appstore.base.BaseView;
+import com.uiuipad.appstore.bean.AdminAppInfo;
+import com.uiuipad.appstore.bean.AppClassBean;
+
+import java.util.List;
+
+public class FeaturedContact {
+ public interface Presenter extends BasePresenter {
+ void getAdminApp();
+ void getAdminAppClass();
+ }
+
+ public interface FeaturedView extends BaseView {
+ void setAdminApp(List appInfoList);
+ void getAdminAppError();
+ void getAdminAppFinish();
+ void setAdminAppClass(List appClassBeanList);
+ void getAdminAppClassError();
+ void getAdminAppClassFinish();
+ }
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedFragment.java b/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedFragment.java
new file mode 100644
index 0000000..db90a64
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedFragment.java
@@ -0,0 +1,423 @@
+package com.uiuipad.appstore.fragment.featured;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Configuration;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.fragment.app.FragmentActivity;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.SimpleItemAnimator;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
+import com.bumptech.glide.request.target.CustomTarget;
+import com.bumptech.glide.request.transition.Transition;
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.tencent.mmkv.MMKV;
+import com.uiuipad.appstore.R;
+import com.uiuipad.appstore.activity.ClassAppActivity;
+import com.uiuipad.appstore.activity.MoreAppActivity;
+import com.uiuipad.appstore.adapter.AppAdapter;
+import com.uiuipad.appstore.adapter.BannerViewHolder;
+import com.uiuipad.appstore.base.BaseFragment;
+import com.uiuipad.appstore.bean.AdminAppInfo;
+import com.uiuipad.appstore.bean.AppClassBean;
+import com.uiuipad.appstore.common.CommonConfig;
+import com.uiuipad.appstore.utils.DensityUtil;
+import com.uiuipad.appstore.utils.LogUtils;
+import com.uiuipad.appstore.utils.ToastUtil;
+import com.zhpan.bannerview.BannerViewPager;
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
+import com.zhpan.bannerview.holder.HolderCreator;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class FeaturedFragment extends BaseFragment implements FeaturedContact.FeaturedView {
+ private static final String TAG = FeaturedFragment.class.getSimpleName();
+
+ @BindView(R.id.featured_refresh_layout)
+ SmartRefreshLayout mRefreshLayout;
+ @BindView(R.id.cl)
+ ConstraintLayout cl;
+ @BindView(R.id.iv_banner)
+ ImageView iv_banner;
+ @BindView(R.id.banner_view)
+ BannerViewPager mViewPager;
+
+ @BindView(R.id.cl_exclusive)
+ ConstraintLayout cl_exclusive;
+ @BindView(R.id.tv_exclusive_app)
+ TextView tv_exclusive_app;
+ @BindView(R.id.rv_exclusive)
+ RecyclerView rv_exclusive;
+ @BindView(R.id.iv_exclusive_nodata)
+ ImageView iv_exclusive_nodata;
+
+ @BindView(R.id.cl_popular)
+ ConstraintLayout cl_popular;
+ @BindView(R.id.tv_popular_app)
+ TextView tv_popular_app;
+ @BindView(R.id.rv_popular)
+ RecyclerView rv_popular;
+ @BindView(R.id.iv_popular_nodata)
+ ImageView iv_popular_nodata;
+
+ @BindView(R.id.cl_0)
+ ConstraintLayout cl_0;
+ @BindView(R.id.cl_1)
+ ConstraintLayout cl_1;
+ @BindView(R.id.cl_2)
+ ConstraintLayout cl_2;
+ @BindView(R.id.cl_3)
+ ConstraintLayout cl_3;
+ @BindView(R.id.cl_4)
+ ConstraintLayout cl_4;
+
+ @BindView(R.id.iv_0)
+ ImageView iv_0;
+ @BindView(R.id.iv_1)
+ ImageView iv_1;
+ @BindView(R.id.iv_2)
+ ImageView iv_2;
+ @BindView(R.id.iv_3)
+ ImageView iv_3;
+ @BindView(R.id.iv_4)
+ ImageView iv_4;
+
+ private AppAdapter mExclusiveAppAdapter;
+ private AppAdapter mPopularAppAdapter;
+ private List mAppClassList;
+
+ public static final String EXCLUSIVE_APP = "专属应用";
+ public static final String POPULAR_APP = "热门应用";
+
+ private FeaturedPresenter mPresenter;
+ private View rootView;
+ private FragmentActivity mContext;
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+ public FeaturedFragment() {
+
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ Log.e(TAG, "onCreateView: ");
+ if (null != rootView) {
+ ViewGroup parent = (ViewGroup) rootView.getParent();
+ if (null != parent) {
+ parent.removeView(rootView);
+ }
+ } else { // 如ongoing果rootView为空 ,就实例化该视图
+ rootView = inflater.inflate(R.layout.fragment_featured, container, false);
+ mContext = (FragmentActivity) rootView.getContext();
+ mPresenter = new FeaturedPresenter(mContext);
+ mPresenter.attachView(this);
+ mPresenter.setLifecycle(lifecycleSubject);
+ ButterKnife.bind(this, rootView);
+ initView();
+ }
+ return rootView;
+ }
+
+ public void initView() {
+ mExclusiveAppAdapter = new AppAdapter(mContext);
+ mExclusiveAppAdapter.setHasStableIds(true);
+ mPopularAppAdapter = new AppAdapter(mContext);
+ mPopularAppAdapter.setHasStableIds(true);
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 2);
+ rv_popular.setLayoutManager(gridLayoutManager);
+ rv_popular.setAdapter(mPopularAppAdapter);
+ GridLayoutManager gridLayoutManager2 = new GridLayoutManager(mContext, 2);
+ rv_exclusive.setLayoutManager(gridLayoutManager2);
+ rv_exclusive.setAdapter(mExclusiveAppAdapter);
+
+ ((SimpleItemAnimator) rv_popular.getItemAnimator()).setSupportsChangeAnimations(false);
+ setImageViewSize();
+ mRefreshLayout.setEnableLoadMore(false);
+ mRefreshLayout.setEnableRefresh(true);
+ mRefreshLayout.setOnRefreshListener(refreshlayout -> mPresenter.getAdminApp());
+ mRefreshLayout.autoRefresh();
+ mViewPager.setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
+ .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);
+ cl_0.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openAppClass(0);
+ }
+ });
+ cl_1.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openAppClass(1);
+ }
+ });
+ cl_2.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openAppClass(2);
+ }
+ });
+ cl_3.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openAppClass(3);
+ }
+ });
+ cl_4.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openAppClass(4);
+ }
+ });
+
+ tv_exclusive_app.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(mContext, MoreAppActivity.class);
+ intent.putExtra(CommonConfig.MORE_APP_TITLE, EXCLUSIVE_APP);
+ startActivity(intent);
+ }
+ });
+ tv_popular_app.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(mContext, MoreAppActivity.class);
+ intent.putExtra(CommonConfig.MORE_APP_TITLE, POPULAR_APP);
+ startActivity(intent);
+ }
+ });
+ }
+
+ private void setImageViewSize() {
+ ViewGroup.LayoutParams ivParams = iv_banner.getLayoutParams();
+ ViewGroup.LayoutParams clParams = cl.getLayoutParams();
+ Log.e(TAG, "initView: getWidth: " + ivParams.width);
+ Log.e(TAG, "initView: getHeight:" + ivParams.height);
+ Log.e(TAG, "initView: getWidth: " + ivParams.width);
+ Log.e(TAG, "initView: getHeight:" + ivParams.height);
+ //获取屏幕宽度
+ WindowManager m = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
+ DisplayMetrics outMetrics = new DisplayMetrics();
+ m.getDefaultDisplay().getMetrics(outMetrics);
+ Log.e(TAG, "initView: widthPixels: " + outMetrics.widthPixels);
+ Log.e(TAG, "initView: heightPixels: " + outMetrics.heightPixels);
+
+ int screenWidth = outMetrics.widthPixels;
+ int imageViewWidth = screenWidth - DensityUtil.dpToPx(mContext, 20);
+ //获取屏幕像素
+ BitmapFactory.Options opts = new BitmapFactory.Options();
+ opts.inJustDecodeBounds = true;
+ opts.inSampleSize = 1;
+ opts.inJustDecodeBounds = false;
+ int w = opts.outWidth;
+ int h = opts.outHeight;
+ Log.e(TAG, "initView: w: " + w);
+ Log.e(TAG, "initView: h: " + h);
+
+ int imageViewheight = (int) ((float) (h * 1.0 / w) * imageViewWidth);
+ ivParams.width = imageViewWidth;
+ ivParams.height = imageViewheight;
+ iv_banner.setLayoutParams(ivParams);
+ clParams.height = imageViewheight;
+ cl.setLayoutParams(clParams);
+ Log.e(TAG, "setImageViewSize: clheight :" + cl.getHeight());
+ Log.e(TAG, "setImageViewSize: imageViewheight :" + iv_banner.getHeight());
+ }
+
+ @Override
+ public void fetchData() {
+ mPresenter.getAdminApp();
+ }
+
+ @Override
+ public void onConfigurationChanged(@androidx.annotation.NonNull Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 3);
+ rv_popular.setLayoutManager(gridLayoutManager);
+ } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 2);
+ rv_popular.setLayoutManager(gridLayoutManager);
+ } else {
+ rv_popular.setLayoutManager(new LinearLayoutManager(mContext));
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ registerReceiver();
+ mExclusiveAppAdapter.notifyDataSetChanged();
+ mPopularAppAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (myReceiver != null) {
+ try {
+ mContext.unregisterReceiver(myReceiver);
+ } catch (Exception e) {
+ LogUtils.e("onDestroy", e.getMessage());
+ }
+ }
+ mPresenter.detachView();
+ }
+
+ @Override
+ public void setAdminApp(List appInfoList) {
+ if (appInfoList != null && appInfoList.size() != 0) {
+// if (infos.size() <= 6) {
+// tv_exclusive_app.setVisibility(View.GONE);
+// } else {
+// tv_exclusive_app.setVisibility(View.VISIBLE);
+// }
+// List filterApp = infos.stream().sorted(Comparator.comparingInt(AppInfo::getWeight).reversed()).limit(6).collect(Collectors.toList());
+ rv_exclusive.setVisibility(View.VISIBLE);
+ iv_exclusive_nodata.setVisibility(View.GONE);
+ mExclusiveAppAdapter.setData(appInfoList);
+ cl_exclusive.setVisibility(View.VISIBLE);
+ } else {
+ cl_exclusive.setVisibility(View.GONE);
+ rv_exclusive.setVisibility(View.GONE);
+ iv_exclusive_nodata.setImageDrawable(mContext.getDrawable(R.drawable.app_nodata));
+ iv_exclusive_nodata.setVisibility(View.VISIBLE);
+ }
+ }
+
+ @Override
+ public void getAdminAppError() {
+ rv_exclusive.setVisibility(View.GONE);
+ iv_exclusive_nodata.setImageDrawable(mContext.getDrawable(R.drawable.app_nonetwork));
+ iv_exclusive_nodata.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void getAdminAppFinish() {
+ mPresenter.getAdminAppClass();
+ }
+
+ @Override
+ public void setAdminAppClass(List appClassBeanList) {
+ setClass(appClassBeanList);
+ }
+
+ private void setClass(List appClassList) {
+ if (appClassList == null || appClassList.size() == 0) {
+ return;
+ }
+ this.mAppClassList = appClassList.stream().sorted((o1, o2) -> Integer.compare(o1.getId(), o2.getId())).collect(Collectors.toList());
+ for (int i = 0; i < mAppClassList.size(); i++) {
+ AppClassBean appClassBean = mAppClassList.get(i);
+ int imageviewId = mContext.getResources().getIdentifier("iv_" + (i), "id", mContext.getPackageName());
+ int textviewId = mContext.getResources().getIdentifier("tv_" + (i), "id", mContext.getPackageName());
+ try {
+ ImageView imageView = getActivity().findViewById(imageviewId);
+ TextView textView = getActivity().findViewById(textviewId);
+ Glide.with(mContext).load(appClassBean.getImg()).error(R.drawable.ic_app).into(imageView);
+ textView.setText(appClassBean.getName());
+ } catch (Exception e) {
+ Log.e(TAG, "setClass: " + e.getMessage());
+ }
+ }
+ }
+
+ @Override
+ public void getAdminAppClassError() {
+
+ }
+
+ @Override
+ public void getAdminAppClassFinish() {
+ mRefreshLayout.finishRefresh();
+ }
+
+
+ private void registerReceiver() {
+ 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);
+ mContext.registerReceiver(myReceiver, filter);
+ }
+ }
+
+ private installReceiver myReceiver;
+
+
+ public class installReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ //接收安装广播
+ if (action.equals(Intent.ACTION_PACKAGE_ADDED)
+ || action.equals(Intent.ACTION_PACKAGE_REPLACED)
+ || action.equals(Intent.ACTION_PACKAGE_REMOVED)) {
+ mPopularAppAdapter.notifyDataSetChanged();
+ Log.e("InstallReceiver", action);
+ }
+
+ }
+ }
+
+ private void openAppClass(int index) {
+ if (mAppClassList == null || mAppClassList.size() == 0) {
+ ToastUtil.show("该分类没有应用");
+ return;
+ }
+ AppClassBean appClassBean = mAppClassList.get(index);
+ if (appClassBean == null) {
+ ToastUtil.show("该分类没有应用");
+ return;
+ }
+ int classId = appClassBean.getId();
+ String className = appClassBean.getName();
+ Intent intent = new Intent(getActivity(), ClassAppActivity.class);
+ intent.putExtra(CommonConfig.APP_CLASS_ID, classId);
+ intent.putExtra(CommonConfig.APP_CLASS_NAME, className);
+ startActivity(intent);
+ }
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedPresenter.java b/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedPresenter.java
new file mode 100644
index 0000000..8367480
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/fragment/featured/FeaturedPresenter.java
@@ -0,0 +1,120 @@
+package com.uiuipad.appstore.fragment.featured;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.FragmentEvent;
+import com.uiuipad.appstore.base.BaseResponse;
+import com.uiuipad.appstore.bean.AdminAppInfo;
+import com.uiuipad.appstore.bean.AppClassBean;
+import com.uiuipad.appstore.bean.AppInfo;
+import com.uiuipad.appstore.network.NetInterfaceManager;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.subjects.BehaviorSubject;
+
+public class FeaturedPresenter implements FeaturedContact.Presenter {
+ private static final String TAG = FeaturedPresenter.class.getSimpleName();
+
+ private Context mContext;
+ private FeaturedContact.FeaturedView mView;
+
+ public FeaturedPresenter(Context context) {
+ this.mContext = context;
+ }
+
+ private BehaviorSubject lifecycle;
+
+ void setLifecycle(BehaviorSubject lifecycle) {
+ this.lifecycle = lifecycle;
+ }
+
+ public BehaviorSubject getLifecycle() {
+ return lifecycle;
+ }
+
+ @Override
+ public void attachView(@NonNull FeaturedContact.FeaturedView view) {
+ this.mView = view;
+ }
+
+ @Override
+ public void detachView() {
+ this.mView = null;
+ }
+
+ @Override
+ public void getAdminApp() {
+ NetInterfaceManager.getInstance().getAdminAppObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycle, FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAdminApp", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getAdminApp", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List appInfoList = listBaseResponse.data;
+ mView.setAdminApp(appInfoList);
+ } else {
+ mView.setAdminApp(null);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAdminApp", "onError: " + e.getMessage());
+ mView.getAdminAppError();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAdminApp", "onComplete: ");
+ mView.getAdminAppFinish();
+ }
+ });
+ }
+
+ @Override
+ public void getAdminAppClass() {
+ NetInterfaceManager.getInstance().getAdminAppClassObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycle, FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAdminAppClass", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getAdminAppClass", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List appClassBeanList = listBaseResponse.data;
+ mView.setAdminAppClass(appClassBeanList);
+ } else {
+ mView.setAdminAppClass(null);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAdminAppClass", "onError: " + e.getMessage());
+ mView.getAdminAppClassError();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAdminAppClass", "onComplete: ");
+ mView.getAdminAppClassFinish();
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/HTTPInterface.java b/app/src/main/java/com/uiuipad/appstore/network/HTTPInterface.java
deleted file mode 100644
index c41ee36..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/HTTPInterface.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.uiuipad.appstore.network;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.util.Log;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.uiuipad.appstore.BuildConfig;
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.utils.FileUtils;
-import com.uiuipad.appstore.utils.JGYUtils;
-
-import io.reactivex.rxjava3.core.Observer;
-import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
-import io.reactivex.rxjava3.annotations.NonNull;
-import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.schedulers.Schedulers;
-
-public class HTTPInterface {
-
- public static void checkUpdate(final Context context, String packageName, String versionCode) {
- NetInterfaceManager.getInstance()
- .getNewestAppUpdateControl()
- .getAppUpdate(packageName, versionCode, JGYUtils.getInstance().checkAppPlatform())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("checkUpdate", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse appInfoBaseResponse) {
- Log.e("checkUpdate", "onNext: " + appInfoBaseResponse);
- int code = appInfoBaseResponse.code;
- if (code == 200) {
- AppInfo appInfo = appInfoBaseResponse.data;
- if (null != appInfo) {
- JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(appInfo)).getAsJsonObject();
- FileUtils.ariaDownload(context, appInfo.getApp_url(), jsonObject);
- }
- Log.e("checkUpdate", "update now");
- } else {
- Log.e("checkUpdate", "not find update");
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("checkUpdate", "onError: " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
- Log.e("checkUpdate", "onComplete: ");
- }
- });
- }
-
- public static void checkUpdate(Context context) {
- String packageName = BuildConfig.APPLICATION_ID;
- String versionCode = String.valueOf(BuildConfig.VERSION_CODE);
- checkUpdate(context, packageName, versionCode);
- }
-
- public static void checkUpdate(Context context, String packageName) {
- PackageManager pm = context.getPackageManager();
- PackageInfo info = null;
- try {
- info = pm.getPackageInfo(packageName, 0);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- if (null != info) {
- long appVersionCode;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
- appVersionCode = info.getLongVersionCode();
- } else {
- appVersionCode = info.versionCode;
- }
- checkUpdate(context, packageName, String.valueOf(appVersionCode));
- } else {
- checkUpdate(context, packageName, "0");
- }
- }
-}
-
diff --git a/app/src/main/java/com/uiuipad/appstore/network/NetInterfaceManager.java b/app/src/main/java/com/uiuipad/appstore/network/NetInterfaceManager.java
index 21576e2..2ec88d1 100644
--- a/app/src/main/java/com/uiuipad/appstore/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/uiuipad/appstore/network/NetInterfaceManager.java
@@ -6,34 +6,23 @@ import android.os.Environment;
import android.util.Log;
import com.tencent.mmkv.MMKV;
+import com.uiuipad.appstore.bean.AdminAppInfo;
import com.uiuipad.appstore.bean.AppClassBean;
import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.Banner;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.base.BaseResponse;
import com.uiuipad.appstore.common.CommonConfig;
import com.uiuipad.appstore.disklrucache.CacheHelper;
import com.uiuipad.appstore.network.api.AdminAppApi;
import com.uiuipad.appstore.network.api.AdminAppClassApi;
+import com.uiuipad.appstore.network.api.AdminAppDetailsApi;
+import com.uiuipad.appstore.network.api.AdminClassAppApi;
import com.uiuipad.appstore.network.api.ApplyForInstallApi;
-import com.uiuipad.appstore.network.api.BannerImage;
-import com.uiuipad.appstore.network.api.ClassAppApi;
-import com.uiuipad.appstore.network.api.DownloadApp;
-import com.uiuipad.appstore.network.api.GetBanner;
-import com.uiuipad.appstore.network.api.NewestAppUpdate;
-import com.uiuipad.appstore.network.api.QueryAllApp;
-import com.uiuipad.appstore.network.api.QueryPackageApp;
-import com.uiuipad.appstore.network.api.SNInfo;
-import com.uiuipad.appstore.network.api.SearchAdminAppApi;
-import com.uiuipad.appstore.network.api.SearchAppApi;
import com.uiuipad.appstore.network.interceptor.RepeatRequestInterceptor;
-import com.uiuipad.appstore.utils.JGYUtils;
import com.uiuipad.appstore.utils.ToastUtil;
import com.uiuipad.appstore.utils.Utils;
import java.io.File;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import java.util.concurrent.TimeUnit;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
@@ -61,8 +50,6 @@ public class NetInterfaceManager {
private static final int timeOut = 5;
// 缓存文件最大限制大小20M
private static final long cacheSize = 1024 * 1024 * 64;
- public static final String CUSTOM_REPEAT_REQ_PROTOCOL = "MY_CUSTOM_REPEAT_REQ_PROTOCOL";
- public static final String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI=";
private NetInterfaceManager(Context context) {
if (context == null) {
@@ -128,36 +115,24 @@ public class NetInterfaceManager {
}
- public Observable> getBannerObservable() {
- return mRetrofit.create(GetBanner.class)
- .getBanner()
+ public Observable>> getAdminAppObservable() {
+ return mRetrofit.create(AdminAppApi.class)
+ .getAdminApp(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
- public Observable>> getAdminAppObservable() {
- return mRetrofit.create(AdminAppApi.class).getAdminApp()
+ public Observable>> getAdminClassAppObservable(int id) {
+ return mRetrofit.create(AdminClassAppApi.class)
+ .getAdminApp(Utils.getSerial(), id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
- public Observable>> getQueryAllAppObservable() {
- return mRetrofit.create(QueryAllApp.class)
- .getAllApp(Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread());
- }
-
- public Observable>> getAdminAppByClassObservable(int id) {
- return mRetrofit.create(ClassAppApi.class)
- .getAdminAppByClass(id)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread());
- }
public Observable>> getAdminAppClassObservable() {
return mRetrofit.create(AdminAppClassApi.class)
- .getAdminAppClassApi()
+ .getAdminAppClassApi(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
@@ -169,103 +144,18 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
-
- public SNInfo getuserInfoControl() {
- return mRetrofit.create(SNInfo.class);
+ public Observable> getAdminAppDetailsObservable(long id) {
+ return mRetrofit.create(AdminAppDetailsApi.class)
+ .getAdminAppDetails(id)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
}
- public SearchAppApi getSearchAppControl() {
- return mRetrofit.create(SearchAppApi.class);
- }
-
- public SearchAdminAppApi getSearchAdminAppControl() {
- return mRetrofit.create(SearchAdminAppApi.class);
- }
-
- public BannerImage getBannerImageControl() {
- return mRetrofit.create(BannerImage.class);
- }
-
- public DownloadApp getDownloadAppControl() {
- return mRetrofit.create(DownloadApp.class);
- }
-
- public NewestAppUpdate getNewestAppUpdateControl() {
- return mRetrofit.create(NewestAppUpdate.class);
- }
-
- public QueryPackageApp getQueryPackageAppControl() {
- return mRetrofit.create(QueryPackageApp.class);
- }
public interface onCompleteCallback {
void onComplete();
}
- public void setPushTags(onCompleteCallback callback) {
- Set set = new HashSet<>();
- JGYUtils.getInstance().getAppPlatform(platform -> {
- if (platform == JGYUtils.MTKPlatform) {
- set.add(JGYUtils.MTKTag);
- } 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);
- } else if (platform == JGYUtils.UZY12Platform) {
- set.add(JGYUtils.UZY12Tag);
- } else if (platform == JGYUtils.Cube8183Platform) {
- set.add(JGYUtils.Cube8183Tag);
- } else if (platform == JGYUtils.Teclast8183Platform) {
- set.add(JGYUtils.TeclastMTK12Tag);
- } else if (platform == JGYUtils.ipaly50SEPlatform) {
- set.add(JGYUtils.ipaly50SETag);
- } else if (platform == JGYUtils.iPlayMiniPlatform) {
- set.add(JGYUtils.iPlayMiniTag);
- } else if (platform == JGYUtils.iPlay5013Platform) {
- set.add(JGYUtils.iPlay5013Tag);
- } else if (platform == JGYUtils.iPlay50miniProPlatform) {
- set.add(JGYUtils.iPlay50miniProTag);
- } else if (platform == JGYUtils.U807Platform) {
- set.add(JGYUtils.U807Tag);
- } else if (platform == JGYUtils.iPlay50PPlatform) {
- set.add(JGYUtils.iPlay50PTag);
- }
- });
- setpushTag(set);
- callback.onComplete();
- }
-
- private void setpushTag(Set tagSets) {
-// XGPushManager.clearAndAppendTags(mContext, "clearAndAppendTags :" + System.currentTimeMillis(), tagSets, new XGIOperateCallback() {
-// @Override
-// public void onSuccess(Object o, int i) {
-// Log.e("setPushTags", "onSuccess: " + o);
-// }
-//
-// @Override
-// public void onFail(Object o, int i, String s) {
-// Log.e("setPushTags", "onFail: " + o);
-// }
-// });
-// String[] tag = new ArrayList<>(tagSets).toArray(new String[tagSets.size()]);
-// CloudPushService pushService = PushServiceFactory.getCloudPushService();
-// pushService.bindTag(CloudPushService.DEVICE_TARGET, tag, null, new CommonCallback() {
-// @Override
-// public void onSuccess(String s) {
-// Log.e("bindTag", "bind tag " + Arrays.toString(tag) + " success\n");
-// }
-//
-// @Override
-// public void onFailed(String errorCode, String errorMsg) {
-// Log.e("bindTag", "bind tag " + Arrays.toString(tag) + " failed." +
-// "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
-// }
-// });
- }
-
-
public void getApplyForInstall(String pkg, String name, onCompleteCallback callback) {
getApplyForInstallObservable(pkg, name)
.subscribe(new Observer() {
diff --git a/app/src/main/java/com/uiuipad/appstore/network/UrlAddress.java b/app/src/main/java/com/uiuipad/appstore/network/UrlAddress.java
index 25fa6e0..c72f8ac 100644
--- a/app/src/main/java/com/uiuipad/appstore/network/UrlAddress.java
+++ b/app/src/main/java/com/uiuipad/appstore/network/UrlAddress.java
@@ -1,25 +1,15 @@
package com.uiuipad.appstore.network;
public class UrlAddress {
- public static final String ROOT_URL = "https://led.aolelearn.com/android/";
+ public static final String ROOT_URL = "https://kxapi.uiuios.com/android/";
- /*获取所有应用*/
- public final static String GET_ALL_APPINFO = "app/queryAllApp";
+ /*获取管理员应用*/
+ public final static String GET_ADMIN_APP = "app/app/getAdminApp";
/*获取管理员应用分类*/
- public final static String GET_ADMIN_APP_CLASS = "app/getAdminAppClass";
- /*获取管理员所有应用*/
- public final static String GET_ADMIN_APP = "getAdminApp";
- /*获取应用详情*/
- public final static String GET_PACKAGE_APP = "app/queryPackageApp";
- /*通过SN获取绑定信息*/
- public final static String GET_INFO_FROMESN = "sn/getSnInfo";
- /*获取banner图*/
- public final static String GET_BANNER_IMG = "app/getBrand";
- public final static String GET_BANNER = "sn/getBanner";
- public final static String SEND_DOWNLOADAPP = "app/downloadApp";
- /*根据包名获取更新*/
- public final static String GET_NEWESTAPPUPDATE = "app/newestAppUpdate";
+ public final static String GET_ADMIN_APP_CLASS = "app/app/getAdminAppClass";
/*应用安装申请*/
- public final static String APPLY_FOR_INSTALL = "app/applyForInstall";
+ public final static String APPLY_FOR_INSTALL = "app/app/applyForInstall";
+ /*获取应用市场应用详情*/
+ public final static String GET_ADMIN_APP_DETAILS = "app/app/getAdminAppDetails";
}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppApi.java
index 1a97d46..af3198e 100644
--- a/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppApi.java
+++ b/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppApi.java
@@ -1,15 +1,18 @@
package com.uiuipad.appstore.network.api;
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.base.BaseResponse;
+import com.uiuipad.appstore.bean.AdminAppInfo;
import com.uiuipad.appstore.network.UrlAddress;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
+import retrofit2.http.Query;
public interface AdminAppApi {
@GET(UrlAddress.GET_ADMIN_APP)
- Observable>> getAdminApp();
+ Observable>> getAdminApp(
+ @Query("sn") String sn
+ );
}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppClassApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppClassApi.java
index bed6e85..f706c47 100644
--- a/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppClassApi.java
+++ b/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppClassApi.java
@@ -1,15 +1,18 @@
package com.uiuipad.appstore.network.api;
+import com.uiuipad.appstore.base.BaseResponse;
import com.uiuipad.appstore.bean.AppClassBean;
-import com.uiuipad.appstore.bean.BaseResponse;
import com.uiuipad.appstore.network.UrlAddress;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
+import retrofit2.http.Query;
public interface AdminAppClassApi {
@GET(UrlAddress.GET_ADMIN_APP_CLASS)
- Observable>> getAdminAppClassApi();
+ Observable>> getAdminAppClassApi(
+ @Query("sn") String sn
+ );
}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppDetailsApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppDetailsApi.java
new file mode 100644
index 0000000..80a39bd
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/network/api/AdminAppDetailsApi.java
@@ -0,0 +1,18 @@
+package com.uiuipad.appstore.network.api;
+
+import com.uiuipad.appstore.base.BaseResponse;
+import com.uiuipad.appstore.bean.AppClassBean;
+import com.uiuipad.appstore.network.UrlAddress;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface AdminAppDetailsApi {
+ @GET(UrlAddress.GET_ADMIN_APP_DETAILS)
+ Observable> getAdminAppDetails(
+ @Query("id") long id
+ );
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/AdminClassAppApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/AdminClassAppApi.java
new file mode 100644
index 0000000..0bba656
--- /dev/null
+++ b/app/src/main/java/com/uiuipad/appstore/network/api/AdminClassAppApi.java
@@ -0,0 +1,19 @@
+package com.uiuipad.appstore.network.api;
+
+import com.uiuipad.appstore.base.BaseResponse;
+import com.uiuipad.appstore.bean.AdminAppInfo;
+import com.uiuipad.appstore.network.UrlAddress;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface AdminClassAppApi {
+ @GET(UrlAddress.GET_ADMIN_APP)
+ Observable>> getAdminApp(
+ @Query("sn") String sn,
+ @Query("admin_app_class_id") int id
+ );
+}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/ApplyForInstallApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/ApplyForInstallApi.java
index b2b2406..5f50e1e 100644
--- a/app/src/main/java/com/uiuipad/appstore/network/api/ApplyForInstallApi.java
+++ b/app/src/main/java/com/uiuipad/appstore/network/api/ApplyForInstallApi.java
@@ -1,6 +1,6 @@
package com.uiuipad.appstore.network.api;
-import com.uiuipad.appstore.bean.BaseResponse;
+import com.uiuipad.appstore.base.BaseResponse;
import com.uiuipad.appstore.network.UrlAddress;
import io.reactivex.rxjava3.core.Observable;
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/BannerImage.java b/app/src/main/java/com/uiuipad/appstore/network/api/BannerImage.java
deleted file mode 100644
index 2434cbd..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/BannerImage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.bean.ImageUrl;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import java.util.List;
-
-import io.reactivex.rxjava3.core.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/uiuipad/appstore/network/api/ClassAppApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/ClassAppApi.java
deleted file mode 100644
index 71808bf..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/ClassAppApi.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import java.util.List;
-
-import io.reactivex.rxjava3.core.Observable;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-
-public interface ClassAppApi {
- @GET(UrlAddress.GET_ADMIN_APP)
- Observable>> getAdminAppByClass(
- @Query("class_id") int class_id
- );
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/DownloadApp.java b/app/src/main/java/com/uiuipad/appstore/network/api/DownloadApp.java
deleted file mode 100644
index 26afe10..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/DownloadApp.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import io.reactivex.rxjava3.core.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/uiuipad/appstore/network/api/GetBanner.java b/app/src/main/java/com/uiuipad/appstore/network/api/GetBanner.java
deleted file mode 100644
index 626d409..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/GetBanner.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.Banner;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import io.reactivex.rxjava3.core.Observable;
-import retrofit2.http.GET;
-
-public interface GetBanner {
- @GET(UrlAddress.GET_BANNER)
- Observable> getBanner(
-
- );
-
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/NewestAppUpdate.java b/app/src/main/java/com/uiuipad/appstore/network/api/NewestAppUpdate.java
deleted file mode 100644
index bd5c25f..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/NewestAppUpdate.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import io.reactivex.rxjava3.core.Observable;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-
-public interface NewestAppUpdate {
- @GET(UrlAddress.GET_NEWESTAPPUPDATE)
- Observable> getAppUpdate(
- @Query("packageName") String packageName,
- @Query("versionCode") String versionCode,
- @Query("type") int type
- );
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/QueryAllApp.java b/app/src/main/java/com/uiuipad/appstore/network/api/QueryAllApp.java
deleted file mode 100644
index 7420833..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/QueryAllApp.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import java.util.List;
-
-import io.reactivex.rxjava3.core.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/uiuipad/appstore/network/api/QueryPackageApp.java b/app/src/main/java/com/uiuipad/appstore/network/api/QueryPackageApp.java
deleted file mode 100644
index 0e36dd5..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/QueryPackageApp.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import io.reactivex.rxjava3.core.Observable;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-
-public interface QueryPackageApp {
- @GET(UrlAddress.GET_PACKAGE_APP)
- Observable> getPackageApp(
- @Query("packageName") String packageName,
- @Query("versionCode") long versionCode
- );
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/SNInfo.java b/app/src/main/java/com/uiuipad/appstore/network/api/SNInfo.java
deleted file mode 100644
index b3c6c03..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/SNInfo.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.bean.UserInfo;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import io.reactivex.rxjava3.core.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/uiuipad/appstore/network/api/SearchAdminAppApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/SearchAdminAppApi.java
deleted file mode 100644
index 5829739..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/SearchAdminAppApi.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import java.util.List;
-
-import io.reactivex.rxjava3.core.Observable;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-
-public interface SearchAdminAppApi {
- @GET(UrlAddress.GET_ADMIN_APP)
- Observable>> getAdminApp(
- @Query("app_name") String app_name
- );
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/network/api/SearchAppApi.java b/app/src/main/java/com/uiuipad/appstore/network/api/SearchAppApi.java
deleted file mode 100644
index 0ad75cf..0000000
--- a/app/src/main/java/com/uiuipad/appstore/network/api/SearchAppApi.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.uiuipad.appstore.network.api;
-
-import com.uiuipad.appstore.bean.AppInfo;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.UrlAddress;
-
-import java.util.List;
-
-import io.reactivex.rxjava3.core.Observable;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-
-public interface SearchAppApi {
- @GET(UrlAddress.GET_ALL_APPINFO)
- Observable>> getApp(
- @Query("sn") String sn,
- @Query("app_name") String app_name
- );
-}
diff --git a/app/src/main/java/com/uiuipad/appstore/service/main/MainSPresenter.java b/app/src/main/java/com/uiuipad/appstore/service/main/MainSPresenter.java
index f9b91b8..4865128 100644
--- a/app/src/main/java/com/uiuipad/appstore/service/main/MainSPresenter.java
+++ b/app/src/main/java/com/uiuipad/appstore/service/main/MainSPresenter.java
@@ -39,11 +39,6 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getSnTag() {
- NetInterfaceManager.getInstance().setPushTags(new NetInterfaceManager.onCompleteCallback() {
- @Override
- public void onComplete() {
- mView.setSnTag();
- }
- });
+
}
}
diff --git a/app/src/main/java/com/uiuipad/appstore/service/main/MainService.java b/app/src/main/java/com/uiuipad/appstore/service/main/MainService.java
index 7ec4ef3..5cae011 100644
--- a/app/src/main/java/com/uiuipad/appstore/service/main/MainService.java
+++ b/app/src/main/java/com/uiuipad/appstore/service/main/MainService.java
@@ -16,25 +16,16 @@ import com.trello.rxlifecycle4.LifecycleTransformer;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
-import com.uiuipad.appstore.bean.BaseResponse;
-import com.uiuipad.appstore.network.HTTPInterface;
-import com.uiuipad.appstore.network.NetInterfaceManager;
import com.uiuipad.appstore.utils.ApkUtils;
import com.uiuipad.appstore.utils.JGYUtils;
import com.uiuipad.appstore.utils.LogUtils;
import com.uiuipad.appstore.utils.SPUtils;
-import com.uiuipad.appstore.utils.Utils;
import org.jetbrains.annotations.NotNull;
import java.io.File;
-import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
-import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
-import io.reactivex.rxjava3.core.Observer;
-import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public class MainService extends Service implements MainSContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider {
@@ -53,8 +44,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
public void onConnected(NetworkUtils.NetworkType networkType) {
Log.e(TAG, "网络已连接");
if (JGYUtils.getInstance().isScreenOn()) {
- HTTPInterface.checkUpdate(MainService.this);
- HTTPInterface.checkUpdate(MainService.this, "com.uiui.sn");
mPresenter.getSnTag();
}
}
@@ -84,9 +73,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
- Aria.download(this).register();
-// return START_STICKY;
- return super.onStartCommand(intent, flags, startId);
+ return START_STICKY;
}
@Override
@@ -96,8 +83,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
Aria.download(this).register();
- HTTPInterface.checkUpdate(MainService.this);
-
lifecycleSubject.onNext(ActivityEvent.CREATE);
mPresenter = new MainSPresenter(this);
mPresenter.setLifecycle(lifecycleSubject);
@@ -142,35 +127,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
String packageName = jsonObject.get("app_package").getAsString();
File file = new File(downloadPath);
int admin_id = (int) SPUtils.get(MainService.this, "admin_id", -1);
- NetInterfaceManager.getInstance()
- .getDownloadAppControl()
- .sendDownloadApp(packageName, file.length(), Utils.getSerial(), admin_id)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
-
- }
-
- @Override
- public void onNext(@NonNull BaseResponse baseResponse) {
- int code = baseResponse.code;
- String msg = baseResponse.msg;
- Log.e("taskComplete", "onNext: " + "code" + code + ",msg:" + msg);
-
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("taskComplete", "onError: " + e.getMessage());
- }
-
- @Override
- public void onComplete() {
-
- }
- });
}
ApkUtils.installApp(MainService.this, task.getFilePath());
}
diff --git a/app/src/main/java/com/uiuipad/appstore/utils/Utils.java b/app/src/main/java/com/uiuipad/appstore/utils/Utils.java
index 0299d5b..1c57c34 100644
--- a/app/src/main/java/com/uiuipad/appstore/utils/Utils.java
+++ b/app/src/main/java/com/uiuipad/appstore/utils/Utils.java
@@ -802,8 +802,6 @@ public class Utils {
}
public static boolean canDownloadApp(Context context) {
- int app = Settings.Global.getInt(context.getContentResolver(), CommonConfig.APP_STORE_INSTALL, 1);
- Log.e(TAG, "canDownloadApp: " + app);
- return app == 1;
+ return false;
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xhdpi/icon_0.png b/app/src/main/res/drawable-xhdpi/icon_0.png
index 55eb134..a70fe28 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_0.png and b/app/src/main/res/drawable-xhdpi/icon_0.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_1.png b/app/src/main/res/drawable-xhdpi/icon_1.png
index 0b522a5..e9ea2da 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_1.png and b/app/src/main/res/drawable-xhdpi/icon_1.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_2.png b/app/src/main/res/drawable-xhdpi/icon_2.png
index 1c32294..5b2d5af 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_2.png and b/app/src/main/res/drawable-xhdpi/icon_2.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_3.png b/app/src/main/res/drawable-xhdpi/icon_3.png
index a149474..b03949b 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_3.png and b/app/src/main/res/drawable-xhdpi/icon_3.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_4.png b/app/src/main/res/drawable-xhdpi/icon_4.png
index cd0f256..97f153b 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_4.png and b/app/src/main/res/drawable-xhdpi/icon_4.png differ
diff --git a/app/src/main/res/layout-land/fragment_featured.xml b/app/src/main/res/layout-land/fragment_featured.xml
index a13ecfb..9a3843f 100644
--- a/app/src/main/res/layout-land/fragment_featured.xml
+++ b/app/src/main/res/layout-land/fragment_featured.xml
@@ -214,37 +214,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_4" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
热门推荐
更多…
- 热门推荐
+ 学前必备
在线学习
- 学霸必备
- 偏科助手
- 基础工具
+ 娱乐应用
+ 其他应用
+ 学习工具
学习软件
基于安全管理策略,【%s】需要家长审批后才能安装