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

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

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

或者只要可以检查最新版本并通知用户更新, 任何其他方法都会执行


Google在两个月前更新了Play商店。 这是我现在正在解决的解决方案..

class GetVersionCode extends AsyncTask<Void, String, String> {

    @Override

    protected String doInBackground(Void... voids) {

        String newVersion = null;

        try {
            Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName()  + "&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();
            if (document != null) {
                Elements element = document.getElementsContainingOwnText("Current Version");
                for (Element ele : element) {
                    if (ele.siblingElements() != null) {
                        Elements sibElemets = ele.siblingElements();
                        for (Element sibElemet : sibElemets) {
                            newVersion = sibElemet.text();
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return newVersion;

    }


    @Override

    protected void onPostExecute(String onlineVersion) {

        super.onPostExecute(onlineVersion);

        if (onlineVersion != null && !onlineVersion.isEmpty()) {

            if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
                //show anything
            }

        }

        Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion);

    }
}

并且不要忘记添加JSoup库

dependencies {
compile 'org.jsoup:jsoup:1.8.3'}

和Oncreate()

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


    String currentVersion;
    try {
        currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }

    new GetVersionCode().execute();

}

就是这样..感谢这个链接


为了节省编写检查Android应用程序新版本更新的时间,我将它写为库并在https://github.com/winsontan520/Android-WVersionManager中开放源码


你可以使用这个Android库:https://github.com/danielemaddaluno/Android-Update-Checker。 它旨在提供可重复使用的工具,以便在商店中存在任何更新的应用程序发布更新时异步检查。 它基于使用Jsoup(http://jsoup.org/)来测试是否真正存在解析Google Play商店中应用程序页面的新更新:

private boolean web_update(){
    try {       
        String curVersion = applicationContext.getPackageManager().getPackageInfo(package_name, 0).versionName; 
        String newVersion = curVersion;
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + package_name + "&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;
    }
}

作为“值”功能如下(如果值在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 ); 
    }
}

如果你只想验证版本之间的不匹配,你可以改变:

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

链接地址: http://www.djcxy.com/p/90759.html

上一篇: How to allow users to check for the latest app version from inside the app?

下一篇: Get android:versionName manifest element in code