Android InApp Update不会自动获取更新。
创始人
2024-08-14 05:32:37
0

要实现Android In-App Update自动获取更新的功能,可以通过以下步骤进行解决:

  1. 在应用的build.gradle文件中添加In-App Update库的依赖:
implementation 'com.google.android.play:core:1.8.0'
  1. 在应用的MainActivity中添加以下代码来检查是否有可用的更新:
import com.google.android.play.core.appupdate.AppUpdateInfo;
import com.google.android.play.core.appupdate.AppUpdateManager;
import com.google.android.play.core.appupdate.AppUpdateManagerFactory;
import com.google.android.play.core.install.InstallState;
import com.google.android.play.core.install.InstallStateUpdatedListener;
import com.google.android.play.core.install.model.AppUpdateType;
import com.google.android.play.core.tasks.Task;

public class MainActivity extends AppCompatActivity {

    private static final int APP_UPDATE_REQUEST_CODE = 100;

    private AppUpdateManager appUpdateManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        appUpdateManager = AppUpdateManagerFactory.create(this);

        // 检查是否有可用的更新
        Task appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                try {
                    appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.FLEXIBLE, this, APP_UPDATE_REQUEST_CODE);
                } catch (IntentSender.SendIntentException e) {
                    e.printStackTrace();
                }
            }
        });

        // 注册更新状态监听器
        appUpdateManager.registerListener(installStateUpdatedListener);
    }

    @Override
    protected void onResume() {
        super.onResume();

        // 检查更新状态
        appUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> {
            if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
                // 更新已经下载完成,弹出安装对话框
                popupSnackbarForCompleteUpdate();
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 取消注册更新状态监听器
        appUpdateManager.unregisterListener(installStateUpdatedListener);
    }

    private InstallStateUpdatedListener installStateUpdatedListener = installState -> {
        if (installState.installStatus() == InstallStatus.DOWNLOADED) {
            // 更新已经下载完成,弹出安装对话框
            popupSnackbarForCompleteUpdate();
        }
    };

    private void popupSnackbarForCompleteUpdate() {
        Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),
                "更新已下载完成,是否立即安装?", Snackbar.LENGTH_INDEFINITE);
        snackbar.setAction("安装", view -> {
            appUpdateManager.completeUpdate();
        });
        snackbar.show();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == APP_UPDATE_REQUEST_CODE) {
            if (resultCode != RESULT_OK) {
                // 更新失败,根据resultCode进行处理
                Log.e("Update", "Update flow failed! Result code: " + resultCode);
            }
        }
    }
}

以上代码中,我们使用了AppUpdateManager来检查是否有可用的更新,并通过startUpdateFlowForResult方法来启动更新流程。在onResume方法中,我们检查更新状态,如果更新已经下载完成,则弹出安装对话框。同时,我们还注册了更新状态的监听器,在更新已经下载完成时触发弹出安装对话框。

注意:上述代码是使用了Flexible Update来实现自动获取更新的功能。如果要使用Immediate Update,只需将AppUpdateType.FLEXIBLE替换为AppUpdateType.IMMEDIATE即可。

相关内容

热门资讯

透视揭露!wepoker辅助脚... 透视揭露!wepoker辅助脚本,wepoker私人局透视-确实是真的有辅助神器(哔哩哔哩)1、下载...
透视科普!wpk透视是真的假的... 透视科普!wpk透视是真的假的,wpk软件是正规的吗-真是存在有辅助软件(哔哩哔哩)1、金币登录送、...
透视解密!wepoker辅助真... 透视解密!wepoker辅助真的假的,We poker辅助器下载-真是真的有辅助神器(哔哩哔哩)亲,...
透视推荐!hhpoker辅助软... 透视推荐!hhpoker辅助软件,hhpoker德州有挂吗-果然是有辅助神器(哔哩哔哩)1、模拟器是...
透视科普!wpk透视是真的假的... 透视科普!wpk透视是真的假的,wpk辅助器是真的吗-真是是真的有辅助攻略(哔哩哔哩)1、有没有辅助...
透视曝光!wepoker可以透... 透视曝光!wepoker可以透视码,wejoker内置辅助-本来有辅助教程(哔哩哔哩)1、该软件可以...
透视揭露!wepoker破解工... 透视揭露!wepoker破解工具,wepoker怎么设置盖牌-本来一直总是有辅助方法(哔哩哔哩)1、...
透视有挂!有哪些免费的wpk作... 透视有挂!有哪些免费的wpk作弊码,wpk辅助器是真的吗-果然一直总是有辅助脚本(哔哩哔哩)1、公共...
透视关于!德扑圈透视挂,德普之... 透视关于!德扑圈透视挂,德普之星透视辅助-好像是真的有辅助软件(哔哩哔哩)脚本下载中分为三种模型:挂...
透视解密!德普辅助器怎么用,德... 透视解密!德普辅助器怎么用,德普之星透视-好像是有辅助app(哔哩哔哩)1、完成辅助器v3.3的残局...