如何允许用户从应用程序内部检查最新的应用程序版本?

2022-08-31 16:39:27

我想在应用程序中添加“检查更新”按钮,以便当有人单击它时,它将显示一个Toast消息/进度对话框,用于检查应用程序的版本。

如果找到新版本,应用程序将自动将其下载到手机,并允许用户手动安装更新的应用程序。

或者任何其他方法都可以做到,只要它可以检查最新版本并通知用户更新。


更新:现在,你可以使用 https://developer.android.com/guide/playcore/in-app-updates 在应用中执行此操作


答案 1

您可以使用此 Android 库:https://github.com/danielemaddaluno/Android-Update-Checker。它旨在提供一种可重用的工具,用于异步检查应用商店中是否存在任何较新的已发布应用更新。它基于使用Jsoup(http://jsoup.org/)来测试是否确实存在解析Google Play商店上应用程序页面的新更新:

private boolean web_update(){
    try {       
        String curVersion = applicationContext.getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 0).versionName;   
        String newVersion = curVersion;
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID + "&hl=en")
                .timeout(30000)
                .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                .referrer("http://www.google.com")
                .get()
                .select("div[itemprop=softwareVersion]")
                .first()
                .ownText();
        return (value(curVersion) < value(newVersion)) ? true : false;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

并且作为“值”函数,则如下(如果值为 beetween 0-99,则有效):

private long value(String string) {
    string = string.trim();
    if( string.contains( "." )){ 
        final int index = string.lastIndexOf( "." );
        return value( string.substring( 0, index ))* 100 + value( string.substring( index + 1 )); 
    }
    else {
        return Long.valueOf( string ); 
    }
}

如果您只想验证不匹配的 Beetween 版本,可以更改:

value(curVersion) < value(newVersion)value(curVersion) != value(newVersion)


答案 2

如果它是市场上的应用程序,那么在应用程序启动时,请启动一个意图来打开市场应用程序,希望这将导致它检查更新。

否则,实现和更新检查器相当容易。这是我的代码(粗略地):

String response = SendNetworkUpdateAppRequest(); // Your code to do the network request
                                                 // should send the current version
                                                 // to server
if(response.equals("YES")) // Start Intent to download the app user has to manually install it by clicking on the notification
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("URL TO LATEST APK")));

当然,您应该重写此内容以在后台线程上执行请求,但是您明白了。

如果你喜欢一些稍微复杂但允许你的应用自动应用更新的东西,请参阅此处


推荐