version:1.3

fix:
add:首页所有应用开关
This commit is contained in:
2022-01-14 15:45:30 +08:00
parent 8a8f215bdb
commit a6e3aa58e0
19 changed files with 173 additions and 90 deletions

View File

@@ -39,8 +39,8 @@ android {
productFlavors { productFlavors {
beta { beta {
flavorDimensions "default" flavorDimensions "default"
versionCode 3 versionCode 4
versionName "1.2" versionName "1.3"
manifestPlaceholders = [ manifestPlaceholders = [
JPUSH_PKGNAME: "com.uiui.appstore", JPUSH_PKGNAME: "com.uiui.appstore",
JPUSH_APPKEY : "c93d01f43046fa500d162817", //JPush 上注册的包名对应的 Appkey. JPUSH_APPKEY : "c93d01f43046fa500d162817", //JPush 上注册的包名对应的 Appkey.

View File

@@ -458,9 +458,8 @@ public class MainActivity extends BaseActivity {
private void getAllAppPackageName() { private void getAllAppPackageName() {
NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial()) NetInterfaceManager.getInstance()
.subscribeOn(Schedulers.io()) .getQueryAllAppObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() { .subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
@Override @Override
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {

View File

@@ -143,9 +143,8 @@ public class SearcherActivity extends BaseActivity {
} }
private void getAllAppPackageName() { private void getAllAppPackageName() {
NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial()) NetInterfaceManager.getInstance()
.subscribeOn(Schedulers.io()) .getQueryAllAppObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() { .subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {

View File

@@ -1,8 +1,11 @@
package com.uiui.appstore.bean; package com.uiui.appstore.bean;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable; import java.io.Serializable;
public class AppInfo implements Serializable { public class AppInfo implements Serializable {
@SerializedName(value = "app_id", alternate = {"id"})
private int app_id; private int app_id;
private String app_name; private String app_name;
private String app_package; private String app_package;

View File

@@ -9,6 +9,7 @@ import android.content.res.Resources;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@@ -77,6 +78,8 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
SmartRefreshLayout mRefreshLayout; SmartRefreshLayout mRefreshLayout;
@BindView(R.id.iv_banner) @BindView(R.id.iv_banner)
ImageView iv_banner; ImageView iv_banner;
@BindView(R.id.iv_nodata)
ImageView iv_nodata;
@BindView(R.id.banner_view) @BindView(R.id.banner_view)
BannerViewPager<String, BannerViewHolder> mViewPager; BannerViewPager<String, BannerViewHolder> mViewPager;
@@ -145,9 +148,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
mRvResult.setAdapter(adapter); mRvResult.setAdapter(adapter);
mRefreshLayout.setEnableLoadMore(false); mRefreshLayout.setEnableLoadMore(false);
mRefreshLayout.setEnableRefresh(true); mRefreshLayout.setEnableRefresh(true);
mRefreshLayout.setOnRefreshListener(refreshlayout -> { mRefreshLayout.setOnRefreshListener(refreshlayout -> initAPPData());
initAPPData();
});
adapter.setData(newAppInfoList); adapter.setData(newAppInfoList);
mRefreshLayout.autoRefresh(); mRefreshLayout.autoRefresh();
} }
@@ -224,7 +225,12 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
} }
synchronized private void initAPPData() { synchronized private void initAPPData() {
int setting_admin_app = Settings.System.getInt(getActivity().getContentResolver(), "setting_admin_app", 0);
if (setting_admin_app == 0) {
getAllAppInfo(); getAllAppInfo();
} else {
getAdminApp();
}
getBanner(); getBanner();
} }
@@ -358,9 +364,8 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
} }
private void getAllAppInfo() { private void getAllAppInfo() {
NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial()) NetInterfaceManager.getInstance()
.subscribeOn(Schedulers.io()) .getQueryAllAppObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() { .subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
@Override @Override
public void onSubscribe(@NonNull Disposable d) { public void onSubscribe(@NonNull Disposable d) {
@@ -370,17 +375,67 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
@Override @Override
public void onNext(@NonNull BaseResponse<List<AppInfo>> listBaseResponse) { public void onNext(@NonNull BaseResponse<List<AppInfo>> listBaseResponse) {
Log.e("getAllAppInfo", "onNext: " + 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: ");
mRefreshLayout.finishRefresh();
}
});
}
private void getAdminApp() {
NetInterfaceManager.getInstance()
.getAdminAppObservable()
.subscribe(new Observer<BaseResponse<List<AppInfo>>>() {
@Override
public void onSubscribe(Disposable d) {
Log.e("getAdminApp", "onSubscribe: ");
}
@Override
public void onNext(BaseResponse<List<AppInfo>> 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<List<AppInfo>> listBaseResponse) {
int code = listBaseResponse.code; int code = listBaseResponse.code;
if (code == 200) { if (code == 200) {
List<AppInfo> infos = listBaseResponse.data; List<AppInfo> infos = listBaseResponse.data;
newAppInfoList = infos; newAppInfoList = infos;
// mRvResult.setVisibility(View.VISIBLE); mRvResult.setVisibility(View.VISIBLE);
// imageView.setVisibility(View.GONE); iv_nodata.setVisibility(View.GONE);
adapter.setData(newAppInfoList); adapter.setData(newAppInfoList);
adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged();
} else { } else {
// mRvResult.setVisibility(View.GONE); mRvResult.setVisibility(View.GONE);
// imageView.setVisibility(View.VISIBLE); iv_nodata.setImageDrawable(getActivity().getDrawable(R.drawable.app_nodata));
iv_nodata.setVisibility(View.VISIBLE);
if (!BuildConfig.DEBUG) { if (!BuildConfig.DEBUG) {
Intent intent = new Intent(); Intent intent = new Intent();
// intent.putExtra("text", getResources().getString(R.string.no_app)); // intent.putExtra("text", getResources().getString(R.string.no_app));
@@ -391,18 +446,10 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
} }
} }
@Override private void setAllAppError() {
public void onError(@NonNull Throwable e) { mRvResult.setVisibility(View.GONE);
Log.e("getAllAppInfo", "onError: " + e.getMessage()); iv_nodata.setImageDrawable(getActivity().getDrawable(R.drawable.app_nonetwork));
onComplete(); iv_nodata.setVisibility(View.VISIBLE);
}
@Override
public void onComplete() {
Log.e("getAllAppInfo", "onComplete: ");
mRefreshLayout.finishRefresh();
}
});
} }
private void getBannerImg() { private void getBannerImg() {

View File

@@ -3,9 +3,11 @@ package com.uiui.appstore.network;
import android.content.Context; import android.content.Context;
import android.os.Environment; import android.os.Environment;
import com.uiui.appstore.bean.AppInfo;
import com.uiui.appstore.bean.Banner; import com.uiui.appstore.bean.Banner;
import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.bean.BaseResponse;
import com.uiui.appstore.network.URLs.UrlAddress; 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.BannerImage;
import com.uiui.appstore.network.api.DownloadApp; import com.uiui.appstore.network.api.DownloadApp;
import com.uiui.appstore.network.api.GetBanner; 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.SNInfo;
import com.uiui.appstore.network.api.SearchApp; import com.uiui.appstore.network.api.SearchApp;
import com.uiui.appstore.network.api.QueryPackageApp; import com.uiui.appstore.network.api.QueryPackageApp;
import com.uiui.appstore.utils.Utils;
import java.io.File; import java.io.File;
import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import io.reactivex.Observable; import io.reactivex.Observable;
@@ -95,8 +99,11 @@ public class NetInterfaceManager {
return mRetrofit.create(SNInfo.class); return mRetrofit.create(SNInfo.class);
} }
public QueryAllApp getQueryAllAppControl() { public Observable<BaseResponse<List<AppInfo>>> getQueryAllAppObservable() {
return mRetrofit.create(QueryAllApp.class); return mRetrofit.create(QueryAllApp.class)
.getAllApp(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
} }
public SearchApp getSearchAppControl() { public SearchApp getSearchAppControl() {
@@ -119,4 +126,12 @@ public class NetInterfaceManager {
return mRetrofit.create(QueryPackageApp.class); return mRetrofit.create(QueryPackageApp.class);
} }
public Observable<BaseResponse<List<AppInfo>>> getAdminAppObservable() {
return mRetrofit.create(AdminApp.class).getAdminApp()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
} }

View File

@@ -2,9 +2,11 @@ package com.uiui.appstore.network.URLs;
public class UrlAddress { public class UrlAddress {
public final static String ROOT_URL = "https://led.aolelearn.cn/android/"; 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_PACKAGE_APP = "app/queryPackageApp";
//获取所有应用排行 //获取所有应用排行
public final static String GET_ALL_RANK = "App/rankings"; public final static String GET_ALL_RANK = "App/rankings";

View File

@@ -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<BaseResponse<List<AppInfo>>> getAdminApp(
);
}

View File

@@ -13,6 +13,7 @@ import android.net.Uri;
import android.os.Binder; import android.os.Binder;
import android.os.Build; import android.os.Build;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Toast; import android.widget.Toast;
@@ -656,7 +657,7 @@ public class ApkUtils {
bean.setPackageName(packageName); bean.setPackageName(packageName);
Drawable icon = resolveInfoList.get(i).loadIcon(context.getPackageManager()); Drawable icon = resolveInfoList.get(i).loadIcon(context.getPackageManager());
bean.setIcon(icon); bean.setIcon(icon);
if (packageName.contains(qch_force_app)) { if (!TextUtils.isEmpty(qch_force_app) && qch_force_app.contains(packageName)) {
bean.setCanUnintall(false); bean.setCanUnintall(false);
} else { } else {
bean.setCanUnintall(true); bean.setCanUnintall(true);

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -74,7 +74,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:text="版本:" android:text="版本:"
android:textSize="20sp" android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_appname" /> app:layout_constraintTop_toBottomOf="@+id/tv_appname" />

View File

@@ -55,19 +55,19 @@
android:nestedScrollingEnabled="false" android:nestedScrollingEnabled="false"
android:overScrollMode="never" /> android:overScrollMode="never" />
<!-- <ImageView--> <ImageView
<!-- android:id="@+id/imageView"--> android:id="@+id/iv_nodata"
<!-- android:layout_width="300dp"--> android:layout_width="300dp"
<!-- android:layout_height="300dp"--> android:layout_height="300dp"
<!-- android:layout_centerInParent="true"--> android:layout_centerInParent="true"
<!-- android:adjustViewBounds="true"--> android:adjustViewBounds="true"
<!-- android:scaleType="centerInside"--> android:scaleType="centerInside"
<!-- android:src="@drawable/icon_nodata"--> android:src="@drawable/app_nodata"
<!-- android:visibility="gone"--> android:visibility="gone"
<!-- app:layout_constraintBottom_toBottomOf="parent"--> app:layout_constraintBottom_toBottomOf="parent"
<!-- app:layout_constraintEnd_toEndOf="parent"--> app:layout_constraintEnd_toEndOf="parent"
<!-- app:layout_constraintStart_toStartOf="parent"--> app:layout_constraintStart_toStartOf="parent"
<!-- app:layout_constraintTop_toTopOf="parent" />--> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView> </ScrollView>

View File

@@ -216,7 +216,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:textSize="19sp" android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />

View File

@@ -74,7 +74,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:text="版本:" android:text="版本:"
android:textSize="20sp" android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_appname" /> app:layout_constraintTop_toBottomOf="@+id/tv_appname" />

View File

@@ -59,19 +59,19 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<!-- <ImageView--> <ImageView
<!-- android:id="@+id/imageView"--> android:id="@+id/iv_nodata"
<!-- android:layout_width="300dp"--> android:layout_width="300dp"
<!-- android:layout_height="300dp"--> android:layout_height="300dp"
<!-- android:layout_centerInParent="true"--> android:layout_centerInParent="true"
<!-- android:adjustViewBounds="true"--> android:adjustViewBounds="true"
<!-- android:scaleType="centerInside"--> android:scaleType="centerInside"
<!-- android:src="@drawable/icon_nodata"--> android:src="@drawable/app_nodata"
<!-- android:visibility="gone"--> android:visibility="gone"
<!-- app:layout_constraintBottom_toBottomOf="parent"--> app:layout_constraintBottom_toBottomOf="parent"
<!-- app:layout_constraintEnd_toEndOf="parent"--> app:layout_constraintEnd_toEndOf="parent"
<!-- app:layout_constraintStart_toStartOf="parent"--> app:layout_constraintStart_toStartOf="parent"
<!-- app:layout_constraintTop_toTopOf="parent" />--> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView> </ScrollView>

View File

@@ -218,7 +218,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:textSize="19sp" android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />