2016-01-16 127 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。 –

相關問題