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 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 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】需要家长审批后才能安装