2016-01-16 2 views
3

Вопрос:Как получить последнюю версию Android-приложения из Google Playstore?

Я хочу, чтобы получить последнюю версию моего приложения в производстве, от Google Playstore. Я хочу добавить функциональность для принудительного обновления, если этого требуют некоторые изменения в последней версии.

То, что я:

я в настоящее время обновляет последнюю версию приложения на моем сервере, и принуждая приложение, чтобы запросить его и проверить версию против него. Это работает. Но я не хочу обновлять свой сервер каждый раз, когда я выпускаю новую версию. Я хочу, чтобы приложение могло получать одну и ту же информацию из Google Playstore.

Что мне нужно:

Я могу справиться с логикой на стороне клиента (в приложении). Все, что мне нужно - это вызов API в Playstore, чтобы получить последнюю версию своего собственного приложения. Если кто-то может помочь мне с некоторыми указателями на это, это будет очень полезно.

Приветствия,

Rohitesh

+0

Проверьте, работает ли [this] (https://github.com/rampo/UpdateChecker). Если это так, то вам не нужно делать какие-либо вызовы API. –

+0

@IceMAN: Это выглядит хорошо. Но я бы предпочел что-то более легкое. Вот почему я хотел бы знать, если я могу позвонить API в Playstore и сам получить эти данные. – Rohitesh

+0

@ IceMAN: Итак, я просмотрел код, и они также соскабливают веб-страницу приложения в Playstore. Такова идея, которую я изначально имел, но, по моему мнению, это не очень изящное решение. Поэтому было интересно, есть ли API. – Rohitesh

ответ

1

Существует трюк, который можно реализовать для получения текущей версии игры магазин.

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 для этого. Скремблирование данных, никогда не является хорошей идеей, так как даже небольшое изменение в HTML-списке игрового магазина нарушит логику. – Rohitesh

+0

Нет, нет официального API-интерфейса для получения версии приложений из магазина воспроизведения. –

Смежные вопросы