2016-01-16 69 views
3

问题如何从Google Play Store获取最新版本的Android应用程序?

我想从Google Play Store获得我的应用程序的最新版本。我想添加功能来强制升级,如果最新版本中的某些更改需要它。

我有什么

我目前正在更新我的服务器上的最新版本的应用程序,并迫使应用请求,并检查版本反对。这工作。但是我不想每次发布新版本时在我的服务器上更新。我希望应用能够从Google Play商店获取相同的信息。

我需要什么

我可以处理客户端的逻辑(在应用程序)。我只需要一个API来调用Playstore来获取我自己的应用的最新生产版本。如果任何人都可以在这方面提供一些指导,那将会非常有帮助。

干杯,

Rohitesh

+0

检查[this](https://github.com/rampo/UpdateChecker)是否仍然有效。如果是这样,那么你不需要进行任何API调用。 –

+0

@IceMAN:看起来不错。但我仍然更喜欢更轻量级的东西。这就是为什么我想知道,如果我可以对Playstore进行API调用并自己获取这些数据。 – Rohitesh

+0

@IceMAN:所以,我查看了代码,他们也在Playstore上为应用程序抓取网页。这是我最初的想法,但据我看,它不是一个非常优雅的解决方案。所以,想知道是否有API。 – Rohitesh

回答

1

还有就是可以实施获取当前Play商店版本一招。

public void getUpdate() { 
     final String appPackageName = getPackageName(); 
     Document doc = null; 
     try { 
      doc = Jsoup.connect("https://play.google.com/store/apps/details?id=" + appPackageName).get(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     // Document doc = Jsoup.parse(resString); 
     if(doc!=null) { 
      Element meta = doc.select("div[itemprop=softwareVersion]").first(); 
      String content = meta.ownText(); 
      System.out.println(content); 
      Double playStoreVersion = Double.valueOf(content); 
      Double currentVersion = getVersionName(); 
      if (playStoreVersion > currentVersion) { 
       try { 
        new AlertDialog.Builder(SplashScreen.this) 
          .setTitle("Alert") 
          .setMessage("Update Is Available.Do You Want To Update?") 
          .setIcon(R.mipmap.ic_launcher) 
          .setCancelable(false) 
          .setPositiveButton("Update", 
            new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface dialog, 
                  int id) { 
              try { 
               startActivityForResult(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)), UPDATE_FROM_PLAY_STORE_REQUEST); 

              } catch (Exception e) { 
               try { 
                startActivityForResult(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)), UPDATE_FROM_PLAY_STORE_REQUEST); 
               } catch (Exception e1) { 

               } 
              } 
              dialog.dismiss(); 
             } 
            }).setNegativeButton("Not yet", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialogInterface, int i) { 
          dialogInterface.dismiss(); 
          Handler(); 

         } 
        }).show(); 
        //startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName))); 
       } catch (android.content.ActivityNotFoundException anfe) { 
        try { 
         startActivityForResult(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)), UPDATE_FROM_PLAY_STORE_REQUEST); 
        } catch (Exception e) { 
        } 
       } 
      } else { 
       Handler(); 
      } 
     }else { 
      Handler(); 
     } 
} 

获取我们自己的应用程序的版本。

public Double getVersionName() { 
    Double VersionName = 0.0; 
    try { 
     String vName = SplashScreen.this.getPackageManager().getPackageInfo(SplashScreen.this.getPackageName(), 0).versionName; 
     VersionName = Double.valueOf(vName); 

    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return VersionName; 
} 
+0

这是一个很好的解决方法@ChandraShekhar!但它仍然从playstore列表中删除数据。这就是我目前正在做的。但我曾问过是否有任何API可用于此。抓取数据,从来不是一个好主意,因为即使是Playstore上市的HTML的一分钟变化,也会打破逻辑。 – Rohitesh

+0

不,没有用于从Play商店获取应用版本的官方API。 –

相关问题