强更替换为appUpdate库。

This commit is contained in:
2025-12-23 18:20:25 +08:00
parent bb54407c62
commit 214c339e93
39 changed files with 2503 additions and 18 deletions

View File

@@ -43,11 +43,17 @@ open class Application : CommonAppContext() {
var inviteDialog: InviteDialog? = null
var currDialogActivity: Activity? = null
// 单例实例
companion object {
@Volatile
private lateinit var instance: Application
var isKeepScreenOn = false
// 全局获取 Application 实例
fun getInstance(): Application {
return instance
@@ -232,6 +238,8 @@ open class Application : CommonAppContext() {
}
fun showInviteDialog(activity: Activity?, t: IndexRecommendRoom) {
if (isKeepScreenOn)
return
if (activity != null && activity == currDialogActivity && inviteDialog != null) {
inviteDialog?.setData(t)
return

View File

@@ -19,6 +19,7 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
@@ -31,6 +32,9 @@ import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.azhon.appupdate.listener.OnButtonClickListener;
import com.azhon.appupdate.listener.OnDownloadListener;
import com.azhon.appupdate.manager.DownloadManager;
import com.blankj.utilcode.util.FragmentUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
@@ -86,6 +90,7 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -504,6 +509,11 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
MvpPre.activitiesPermission();//获取悬浮框权限
if (manager != null && !manager.getDownloadState()){
manager.download();
}
}
private void requestGpsPermissions() {
@@ -647,7 +657,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
CommonAppContext.getInstance().onAppForeground();
}
public void dialogUp(){
public void dialogUp() {
if (!CommonAppContext.getInstance().isPlaying) {
MvpPre.index_recommend_room();
}
@@ -662,22 +672,97 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
MvpPre.userNews();
}
// 用于记录是否手动设置了禁止息屏,避免影响其他场景
/**
* 控制屏幕是否保持常亮(禁止/恢复自动息屏)
*
* @param keepOn true=禁止息屏false=恢复自动息屏
*/
private void keepScreenOn(boolean keepOn) {
if (keepOn == Application.Companion.isKeepScreenOn()) {
return; // 避免重复设置
}
Application.Companion.setKeepScreenOn(keepOn);
// 获取当前Activity的Window设置FLAG_KEEP_SCREEN_ON
if (keepOn) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
@Override
public void appUpdate(AppUpdateModel appUpdateModel) {
if (appUpdateModel.getCode() > getCurrentVersionCode(this)) {
if (appUpdateDialog == null) {
appUpdateDialog = new AppUpdateDialog(this);
appUpdateDialog.setAppUpdateModel(appUpdateModel);
if (appUpdateModel.getIs_force().equals("1") || getCurrentVersionCode(this) - appUpdateModel.getCode() >= 2) {
appUpdateDialog.setCanceledOnTouchOutside(false);
}
// 1. 禁止屏幕自动息屏(核心逻辑)
keepScreenOn(true);
// 初始化DownloadManager注意需确保DownloadManager类的包名正确
manager = new DownloadManager.Builder(this)
.apkUrl(appUpdateModel.getUrl())
.apkName("yusheng.apk")
.smallIcon(R.mipmap.ic_launcher_foreground)
.showNewerToast(false)
.apkVersionCode(appUpdateModel.getCode())
.apkVersionName(appUpdateModel.getVersion())
.apkDescription(appUpdateModel.getContent())
.enableLog(true)
.jumpInstallPage(true)
.dialogButtonTextColor(Color.WHITE)
.showNotification(true)
.showBgdToast(false)
.dialogImage(com.xscm.moduleutil.R.mipmap.imh_app_update)
.forcedUpgrade(appUpdateModel.getIs_force().equals("1"))
.onDownloadListener(new OnDownloadListener() {
@Override
public void start() {
}
@Override
public void downloading(int max, int progress) {
LogUtils.e("AppUpdate", "downloading"+progress);
}
@Override
public void done(@NonNull File apk) {
LogUtils.e("AppUpdate", "done");
}
@Override
public void cancel() {
LogUtils.e("AppUpdate", "cancel");
}
@Override
public void error(@NonNull Throwable e) {
LogUtils.e("AppUpdate", "error", e);
}
})
.onButtonClickListener(id -> {
LogUtils.e("TAG", "onButtonClick: " + id);
})
.build();
// 判空后执行下载
if (manager != null) {
manager.download();
}
appUpdateDialog.show();
// if (appUpdateDialog == null) {
// appUpdateDialog = new AppUpdateDialog(this);
// appUpdateDialog.setAppUpdateModel(appUpdateModel);
// if (appUpdateModel.getIs_force().equals("1") || getCurrentVersionCode(this) - appUpdateModel.getCode() >= 2) {
// appUpdateDialog.setCanceledOnTouchOutside(false);
// }
// }
// appUpdateDialog.show();
}
}
private DownloadManager manager = null;
private String city1;
@Override
@@ -696,7 +781,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
}
public static int getCurrentVersionCode(Context context) {
public int getCurrentVersionCode(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
@@ -893,7 +978,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
@Override
public void index_recommend_room(IndexRecommendRoom indexRecommendRoom) {
if (indexRecommendRoom != null && !Objects.requireNonNull(indexRecommendRoom.getRoom_id()).isEmpty()) {
Application.Companion.getInstance().showInviteDialog(this,indexRecommendRoom);
Application.Companion.getInstance().showInviteDialog(this, indexRecommendRoom);
}
}