Checking my app version programmatically in Android market

后端 未结 2 1735
谎友^
谎友^ 2020-11-29 08:05

Currently I\'m checking the app version code on launch and match it with latest version code on my server and based on this matching I send user to get latest update from An

相关标签:
2条回答
  • 2020-11-29 08:59

    Google Play does not provide any official APIs for retrieving metadata. You could however, check the unofficial API at http://code.google.com/p/android-market-api/.

    Specifically, take a look at the Wiki page HowToSearchApps. The response to the query contains version information:

    {
      "app": [
        {
          "rating": "4.642857142857143",
          "title": "Ruboto IRB",
          "ratingsCount": 14,
          "creator": "Jan Berkel",
          "appType": "APPLICATION",
          "id": "9089465703133677000",
          "packageName": "org.jruby.ruboto.irb",
          "version": "0.1",
          "versionCode": 1,
          "creatorId": "\"Jan Berkel\"",
          "ExtendedInfo": {
            "category": "Tools",
            "permissionId": [
    ...
    
    0 讨论(0)
  • 2020-11-29 09:00

    We can do pattern matching for getting the app version from playStore.

    To match the latest pattern from google playstore ie <div class="BgcNfc">Current Version</div><span class="htlgb"><div><span class="htlgb">X.X.X</span></div> we first have to match the above node sequence and then from above sequence get the version value. Below is the code snippet for same:

        private String getAppVersion(String patternString, String inputString) {
            try{
                //Create a pattern
                Pattern pattern = Pattern.compile(patternString);
                if (null == pattern) {
                    return null;
                }
    
                //Match the pattern string in provided string
                Matcher matcher = pattern.matcher(inputString);
                if (null != matcher && matcher.find()) {
                    return matcher.group(1);
                }
    
            }catch (PatternSyntaxException ex) {
    
                ex.printStackTrace();
            }
    
            return null;
        }
    
    
        private String getPlayStoreAppVersion(String appUrlString) {
            final String currentVersion_PatternSeq = "<div[^>]*?>Current\\sVersion</div><span[^>]*?>(.*?)><div[^>]*?>(.*?)><span[^>]*?>(.*?)</span>";
            final String appVersion_PatternSeq = "htlgb\">([^<]*)</s";
            String playStoreAppVersion = null;
    
            BufferedReader inReader = null;
            URLConnection uc = null;
            StringBuilder urlData = new StringBuilder();
    
            final URL url = new URL(appUrlString);
            uc = url.openConnection();
            if(uc == null) {
               return null;
            }
            uc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
            inReader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            if (null != inReader) {
                String str = "";
                while ((str = inReader.readLine()) != null) {
                               urlData.append(str);
                }
            }
    
            // Get the current version pattern sequence 
            String versionString = getAppVersion (currentVersion_PatternSeq, urlData.toString());
            if(null == versionString){ 
                return null;
            }else{
                // get version from "htlgb">X.X.X</span>
                playStoreAppVersion = getAppVersion (appVersion_PatternSeq, versionString);
            }
    
            return playStoreAppVersion;
        }
    

    I got this solved through this. Hope that helps.

    0 讨论(0)
提交回复
热议问题