diff --git a/app/build.gradle b/app/build.gradle index 4d06b50..eb1d9cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,8 +39,8 @@ android { productFlavors { beta { flavorDimensions "default" - versionCode 3 - versionName "1.2" + versionCode 4 + versionName "1.3" manifestPlaceholders = [ JPUSH_PKGNAME: "com.uiui.appstore", JPUSH_APPKEY : "c93d01f43046fa500d162817", //JPush 上注册的包名对应的 Appkey. diff --git a/app/src/main/java/com/uiui/appstore/activity/MainActivity.java b/app/src/main/java/com/uiui/appstore/activity/MainActivity.java index 731fc94..067bcaa 100644 --- a/app/src/main/java/com/uiui/appstore/activity/MainActivity.java +++ b/app/src/main/java/com/uiui/appstore/activity/MainActivity.java @@ -458,9 +458,8 @@ public class MainActivity extends BaseActivity { private void getAllAppPackageName() { - NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) + NetInterfaceManager.getInstance() + .getQueryAllAppObservable() .subscribe(new Observer>>() { @Override public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { diff --git a/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java b/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java index 5dd3842..214b696 100644 --- a/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java +++ b/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java @@ -143,9 +143,8 @@ public class SearcherActivity extends BaseActivity { } private void getAllAppPackageName() { - NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) + NetInterfaceManager.getInstance() + .getQueryAllAppObservable() .subscribe(new Observer>>() { @Override public void onSubscribe(Disposable d) { diff --git a/app/src/main/java/com/uiui/appstore/bean/AppInfo.java b/app/src/main/java/com/uiui/appstore/bean/AppInfo.java index e7b191a..a9620ca 100644 --- a/app/src/main/java/com/uiui/appstore/bean/AppInfo.java +++ b/app/src/main/java/com/uiui/appstore/bean/AppInfo.java @@ -1,8 +1,11 @@ package com.uiui.appstore.bean; +import com.google.gson.annotations.SerializedName; + import java.io.Serializable; public class AppInfo implements Serializable { + @SerializedName(value = "app_id", alternate = {"id"}) private int app_id; private String app_name; private String app_package; diff --git a/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java b/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java index 6c6e65f..31f5b56 100644 --- a/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java +++ b/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java @@ -9,6 +9,7 @@ import android.content.res.Resources; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.provider.Settings; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; @@ -77,6 +78,8 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager SmartRefreshLayout mRefreshLayout; @BindView(R.id.iv_banner) ImageView iv_banner; + @BindView(R.id.iv_nodata) + ImageView iv_nodata; @BindView(R.id.banner_view) BannerViewPager mViewPager; @@ -145,9 +148,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager mRvResult.setAdapter(adapter); mRefreshLayout.setEnableLoadMore(false); mRefreshLayout.setEnableRefresh(true); - mRefreshLayout.setOnRefreshListener(refreshlayout -> { - initAPPData(); - }); + mRefreshLayout.setOnRefreshListener(refreshlayout -> initAPPData()); adapter.setData(newAppInfoList); mRefreshLayout.autoRefresh(); } @@ -224,7 +225,12 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager } synchronized private void initAPPData() { - getAllAppInfo(); + int setting_admin_app = Settings.System.getInt(getActivity().getContentResolver(), "setting_admin_app", 0); + if (setting_admin_app == 0) { + getAllAppInfo(); + } else { + getAdminApp(); + } getBanner(); } @@ -358,9 +364,8 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager } private void getAllAppInfo() { - NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) + NetInterfaceManager.getInstance() + .getQueryAllAppObservable() .subscribe(new Observer>>() { @Override public void onSubscribe(@NonNull Disposable d) { @@ -370,30 +375,13 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager @Override public void onNext(@NonNull BaseResponse> listBaseResponse) { Log.e("getAllAppInfo", "onNext: " + listBaseResponse); - int code = listBaseResponse.code; - if (code == 200) { - List infos = listBaseResponse.data; - newAppInfoList = infos; -// mRvResult.setVisibility(View.VISIBLE); -// imageView.setVisibility(View.GONE); - adapter.setData(newAppInfoList); - adapter.notifyDataSetChanged(); - } else { -// mRvResult.setVisibility(View.GONE); -// imageView.setVisibility(View.VISIBLE); - if (!BuildConfig.DEBUG) { - Intent intent = new Intent(); -// intent.putExtra("text", getResources().getString(R.string.no_app)); - intent.setClass(getActivity(), HintActivity.class); - startActivity(intent); - getActivity().finish(); - } - } + setAllAppdata(listBaseResponse); } @Override public void onError(@NonNull Throwable e) { Log.e("getAllAppInfo", "onError: " + e.getMessage()); + setAllAppError(); onComplete(); } @@ -405,6 +393,65 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager }); } + private void getAdminApp() { + NetInterfaceManager.getInstance() + .getAdminAppObservable() + .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: "); + mRefreshLayout.finishRefresh(); + } + }); + } + + private void setAllAppdata(BaseResponse> listBaseResponse) { + int code = listBaseResponse.code; + if (code == 200) { + List infos = listBaseResponse.data; + newAppInfoList = infos; + mRvResult.setVisibility(View.VISIBLE); + iv_nodata.setVisibility(View.GONE); + adapter.setData(newAppInfoList); + adapter.notifyDataSetChanged(); + } else { + mRvResult.setVisibility(View.GONE); + iv_nodata.setImageDrawable(getActivity().getDrawable(R.drawable.app_nodata)); + iv_nodata.setVisibility(View.VISIBLE); + if (!BuildConfig.DEBUG) { + Intent intent = new Intent(); +// intent.putExtra("text", getResources().getString(R.string.no_app)); + intent.setClass(getActivity(), HintActivity.class); + startActivity(intent); + getActivity().finish(); + } + } + } + + private void setAllAppError() { + mRvResult.setVisibility(View.GONE); + iv_nodata.setImageDrawable(getActivity().getDrawable(R.drawable.app_nonetwork)); + iv_nodata.setVisibility(View.VISIBLE); + } + private void getBannerImg() { NetInterfaceManager.getInstance() .getBannerImageControl() diff --git a/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java index ffa0178..6d13af8 100644 --- a/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java @@ -3,9 +3,11 @@ package com.uiui.appstore.network; import android.content.Context; import android.os.Environment; +import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.Banner; import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.api.AdminApp; import com.uiui.appstore.network.api.BannerImage; import com.uiui.appstore.network.api.DownloadApp; import com.uiui.appstore.network.api.GetBanner; @@ -14,8 +16,10 @@ import com.uiui.appstore.network.api.QueryAllApp; import com.uiui.appstore.network.api.SNInfo; import com.uiui.appstore.network.api.SearchApp; import com.uiui.appstore.network.api.QueryPackageApp; +import com.uiui.appstore.utils.Utils; import java.io.File; +import java.util.List; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; @@ -95,8 +99,11 @@ public class NetInterfaceManager { return mRetrofit.create(SNInfo.class); } - public QueryAllApp getQueryAllAppControl() { - return mRetrofit.create(QueryAllApp.class); + public Observable>> getQueryAllAppObservable() { + return mRetrofit.create(QueryAllApp.class) + .getAllApp(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); } public SearchApp getSearchAppControl() { @@ -119,4 +126,12 @@ public class NetInterfaceManager { return mRetrofit.create(QueryPackageApp.class); } + public Observable>> getAdminAppObservable() { + return mRetrofit.create(AdminApp.class).getAdminApp() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + + } + + } diff --git a/app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java b/app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java index bb0da81..0181b78 100644 --- a/app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java +++ b/app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java @@ -2,9 +2,11 @@ package com.uiui.appstore.network.URLs; public class UrlAddress { public final static String ROOT_URL = "https://led.aolelearn.cn/android/"; - - public final static String GET_ALL_APPINFO = "app/queryAllApp"; //获取所有应用 + public final static String GET_ALL_APPINFO = "app/queryAllApp"; + //获取管理员所有应用 + public final static String GET_ADMIN_APP = "getAdminApp"; + //获取应用详情 public final static String GET_PACKAGE_APP = "app/queryPackageApp"; //获取所有应用排行 public final static String GET_ALL_RANK = "App/rankings"; diff --git a/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java b/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java new file mode 100644 index 0000000..29de12b --- /dev/null +++ b/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java @@ -0,0 +1,17 @@ +package com.uiui.appstore.network.api; + +import com.uiui.appstore.bean.AppInfo; +import com.uiui.appstore.bean.BaseResponse; +import com.uiui.appstore.network.URLs.UrlAddress; + +import java.util.List; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface AdminApp { + @GET(UrlAddress.GET_ADMIN_APP) + Observable>> getAdminApp( + ); +} diff --git a/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java b/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java index a9023e5..4329809 100644 --- a/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/appstore/utils/ApkUtils.java @@ -13,6 +13,7 @@ import android.net.Uri; import android.os.Binder; import android.os.Build; import android.provider.Settings; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Toast; @@ -656,7 +657,7 @@ public class ApkUtils { bean.setPackageName(packageName); Drawable icon = resolveInfoList.get(i).loadIcon(context.getPackageManager()); bean.setIcon(icon); - if (packageName.contains(qch_force_app)) { + if (!TextUtils.isEmpty(qch_force_app) && qch_force_app.contains(packageName)) { bean.setCanUnintall(false); } else { bean.setCanUnintall(true); diff --git a/app/src/main/res/drawable-xhdpi/app_nodata.png b/app/src/main/res/drawable-xhdpi/app_nodata.png new file mode 100644 index 0000000..f9a5ea1 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/app_nodata.png differ diff --git a/app/src/main/res/drawable-xhdpi/app_nonetwork.png b/app/src/main/res/drawable-xhdpi/app_nonetwork.png new file mode 100644 index 0000000..bc03b6a Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/app_nonetwork.png differ diff --git a/app/src/main/res/drawable-xhdpi/land_banner.png b/app/src/main/res/drawable-xhdpi/land_banner.png index b76ed85..9eddc03 100644 Binary files a/app/src/main/res/drawable-xhdpi/land_banner.png and b/app/src/main/res/drawable-xhdpi/land_banner.png differ diff --git a/app/src/main/res/drawable-xhdpi/port_banner.png b/app/src/main/res/drawable-xhdpi/port_banner.png index 735ea24..b792bf4 100644 Binary files a/app/src/main/res/drawable-xhdpi/port_banner.png and b/app/src/main/res/drawable-xhdpi/port_banner.png differ diff --git a/app/src/main/res/layout-land/activity_about.xml b/app/src/main/res/layout-land/activity_about.xml index 8f9fba4..87ce107 100644 --- a/app/src/main/res/layout-land/activity_about.xml +++ b/app/src/main/res/layout-land/activity_about.xml @@ -74,7 +74,7 @@ android:layout_height="wrap_content" android:layout_marginTop="32dp" android:text="版本:" - android:textSize="20sp" + android:textSize="15sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_appname" /> diff --git a/app/src/main/res/layout-land/fragment_featured.xml b/app/src/main/res/layout-land/fragment_featured.xml index d19b013..dcec23f 100644 --- a/app/src/main/res/layout-land/fragment_featured.xml +++ b/app/src/main/res/layout-land/fragment_featured.xml @@ -55,19 +55,19 @@ android:nestedScrollingEnabled="false" android:overScrollMode="never" /> - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout-land/fragment_manage.xml b/app/src/main/res/layout-land/fragment_manage.xml index fc2f262..0a8b997 100644 --- a/app/src/main/res/layout-land/fragment_manage.xml +++ b/app/src/main/res/layout-land/fragment_manage.xml @@ -165,28 +165,28 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/app/src/main/res/layout-port/activity_about.xml b/app/src/main/res/layout-port/activity_about.xml index 8f9fba4..87ce107 100644 --- a/app/src/main/res/layout-port/activity_about.xml +++ b/app/src/main/res/layout-port/activity_about.xml @@ -74,7 +74,7 @@ android:layout_height="wrap_content" android:layout_marginTop="32dp" android:text="版本:" - android:textSize="20sp" + android:textSize="15sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_appname" /> diff --git a/app/src/main/res/layout-port/fragment_featured.xml b/app/src/main/res/layout-port/fragment_featured.xml index 1a181bd..cf04d6a 100644 --- a/app/src/main/res/layout-port/fragment_featured.xml +++ b/app/src/main/res/layout-port/fragment_featured.xml @@ -59,19 +59,19 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout-port/fragment_manage.xml b/app/src/main/res/layout-port/fragment_manage.xml index cc8ff75..12378b3 100644 --- a/app/src/main/res/layout-port/fragment_manage.xml +++ b/app/src/main/res/layout-port/fragment_manage.xml @@ -218,7 +218,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" - android:textSize="19sp" + android:textSize="14sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" />