2016-12-23 94 views
0

我正在研究一個應用程序我想給應用程序用戶強制更新,如果在Play商店中有新版本可用,應用程序應該向用戶顯示一個對話消息。如果新版本可用,如何在Android應用程序中強制更新?

+2

當您打開您的應用程序,然後調用您的服務器上的Web服務,並檢查應用程序是否更新?如果應用程序更新,然後在谷歌Play商店中打開您的應用程序並更新您的應用程序。 –

+1

你不能這樣做,如果你真的想這樣做,那麼將版本名稱存儲在你的服務器中,並且每當用戶在Splash屏幕上打開應用程序時說,檢查存儲在你的服務器中的版本,並檢查應用程序安裝的版本,基於那個做你的事情。 –

+1

您可以使用外部API檢查已安裝的應用程序版本和最新版本api。檢查這個http://stackoverflow.com/questions/25201349/programmatically-check-play-store-for-app-updates – Praveen

回答

4
public class ForceUpdateAsync extends AsyncTask<String, String, JSONObject>{ 

    private String latestVersion; 
    private String currentVersion; 
    private Context context; 
    public ForceUpdateAsync(String currentVersion, Context context){ 
     this.currentVersion = currentVersion; 
     this.context = context; 
    } 

    @Override 
    protected JSONObject doInBackground(String... params) { 

     try { 
      latestVersion = 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() 
        .select("div[itemprop=softwareVersion]") 
        .first() 
        .ownText(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return new JSONObject(); 
    } 

    @Override 
    protected void onPostExecute(JSONObject jsonObject) { 
     if(latestVersion!=null){ 
      if(!currentVersion.equalsIgnoreCase(latestVersion)){ 
       // Toast.makeText(context,"update is available.",Toast.LENGTH_LONG).show(); 
       if(!(context instanceof SplashActivity)) { 
        if(!((Activity)context).isFinishing()){ 
         showForceUpdateDialog(); 
        } 
       } 
      } 
     } 
     super.onPostExecute(jsonObject); 
    } 

    public void showForceUpdateDialog(){ 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(context, 
       R.style.DialogDark)); 

     alertDialogBuilder.setTitle(context.getString(R.string.youAreNotUpdatedTitle)); 
     alertDialogBuilder.setMessage(context.getString(R.string.youAreNotUpdatedMessage) + " " + latestVersion + context.getString(R.string.youAreNotUpdatedMessage1)); 
     alertDialogBuilder.setCancelable(false); 
     alertDialogBuilder.setPositiveButton(R.string.update, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName()))); 
       dialog.cancel(); 
      } 
     }); 
     alertDialogBuilder.show(); 
    } 
} 

應用中打開你。

<string name="youAreNotUpdatedTitle">Update Available</string> 
    <string name="youAreNotUpdatedMessage">A new version of YOUR_APP_NAME is available. Please update to version\s</string> 
    <string name="youAreNotUpdatedMessage1">\s now</string> 
    <string name="update">Update</string> 

記住,您必須在對話框代碼中定義對話框的樣式。

現在只需在您的基本活動中寫入forceUpdate()函數並在onResume()方法內調用它即可完成!

// check version on play store and force update 
    public void forceUpdate(){ 
     PackageManager packageManager = this.getPackageManager(); 
     PackageInfo packageInfo = null; 
     try { 
      packageInfo = packageManager.getPackageInfo(getPackageName(),0); 
     } catch (PackageManager.NameNotFoundException e) { 
      e.printStackTrace(); 
     } 
     String currentVersion = packageInfo.versionName; 
     new ForceUpdateAsync(currentVersion,BaseActivity.this).execute(); 
    } 
+0

嘿這個代碼是爲我工作,但不工作在realse prograud啓用plz幫助我 –

0

在服務器端存儲您的應用程序的versionCode(您在playstore上發佈)。每次用戶打開應用程序並獲取版本代碼時,請打開API。比較應用用戶當前正在使用的versionCode和您存儲在服務器上的版本。下面是代碼來獲取的versionCode您的應用程序

PackageManager manager = this.getPackageManager(); 
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0); 
String versionCode = info.versionCode; 

的如果的versionCode不匹配(即從的versionCode服務器>應用程序的versionCode),提示用戶更新。

P.S如果您想使用此方法,則每次更新Playstore上的應用程序時都必須更新服務器上的versionCode。

0

在您的第一個活動中,您可以創建一個應該返回最新版本應用的api調用。如果當前版本較低,則將其與當前應用程序版本進行比較,顯示一個要求更新的對話框他們更新按鈕,可以在string.xml你可以添加你想要這樣無論按摩Play商店

0

您可以執行以下操作。

  1. 你應該在你的應用程序,它可以 實施check for the current version of your app on play store此功能。 並且如果用戶正在使用舊版本,則提示他們對話框更新爲 。
  2. 您的應用程序應該具有任何分析功能(Facebook,Firebase, Localytics等)支持應用程序內消息的SDK集成。與 的幫助,你可以播放推送通知或應用內消息 來更新應用程序。

在這種技術的幫助下,您可以要求您的用戶更新應用程序。

相關問題