Android programmatically update application when a new version is available

前端 未结 9 1988
别那么骄傲
别那么骄傲 2020-12-01 08:45

Within my application, I want to check if there is any updated version of my application is in the app store. If there is any, then have to inform the user through an alert

9条回答
  •  难免孤独
    2020-12-01 09:21

    This worked for me. Add this dependency.

        implementation 'org.jsoup:jsoup:1.8.3'
    

    At onCreate() method use the following code:

    try {
           String currentVersion="";
            currentVersion = getApplicationContext().getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
    
            Log.e("Current Version","::"+currentVersion);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    
        new GetVersionCode().execute();
    

    Create class GetVersionCode:

    private class GetVersionCode extends AsyncTask {
    
        @Override
    
        protected String doInBackground(Void... voids) {
    
            String newVersion = null;
    
            try {
                Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=" + context.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 (onlineVersion.equals(currentVersion)) {
    
                } else {
                    AlertDialog alertDialog = new AlertDialog.Builder(context).create();
                    alertDialog.setTitle("Update");
                    alertDialog.setIcon(R.mipmap.ic_launcher);
                    alertDialog.setMessage("New Update is available");
    
                    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Update", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            try {
                                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName())));
                            } catch (android.content.ActivityNotFoundException anfe) {
                                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + context.getPackageName())));
                            }
                        }
                    });
    
                    alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
    
                    alertDialog.show();
                }
    
            }
    
            Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion);
    
        }
    }
    

提交回复
热议问题