2012-12-07 24 views
3

我試圖在登錄前強制更新我的應用程序,如果有任何更新版本可用。我可以檢查更新並能夠在設備中安裝應用程序,我用更新的版本替換舊版本,在所有此過程結束時,我想自動打開/調用我的應用程序而不是手動(我可以手動打開我的應用程序),我無法使用sqlite數據庫來維護應用程序或任何其他APK的某些數據,這將強制強制調用我的應用程序。強制更新我的Android應用程序

任何建議將是非常可觀的。

謝謝。


正如我在我的問題提到的,我可以從我的服務器上安裝新的apk文件更新應用程序,甚至我知道Android市場處理安裝,並會要求調用應用程序,但在我的情況下,我不得不在我的登臺服務器上執行相同的操作以按流程測試我的應用程序。我能夠檢查更新並從我的登臺服務器安裝應用程序,更新的apk安裝我的舊版本得到卸載,我不得不調用我的新版本的應用程序。

任何建議將是可觀的。

+0

如果你的應用是在Play商店,T母雞讓商店處理更新。 –

+0

不幸的是,讓玩商店處理它有主要缺陷。請參閱我對以下答案的評論。 – Ted

回答

1

您可以輕鬆地從您的應用調用Web服務,以確定是否有新版本可用,並指導用戶通過Android瀏覽器下​​載。這種方法的一個優點是可以控制升級率,而不是市場支持的「大爆炸」方法。

http://example.com/update.jsp?versionCode=3

其中的versionCode來自清單版本。然後,我會讓該服務返回空白(無更新)或用戶應該指向的URL來獲取新的apk。

你可以有版本代碼

 getPackageManager().getPackageInfo(getPackageName(), 0).versionCode 

請引發新的意圖訪問的URL。然後,用戶被髮送到下載APK

+0

感謝您的寶貴努力, – Puneet

+0

但是,如何直接詢問Google Play,例如「http://play.google.com/getActiveVersion/ 」,以便Google Play可以返​​回「versionCode」。然後,我可以輕鬆地將其與應用程序的versionCode進行比較,然後採取行動... – Ted

+0

因爲上述答案有一些重大缺陷=(比方說我將新APK上傳到市場。不立即可用*。它需要幾個小時才能出現,而且你永遠不知道它什麼時候出現,我認爲它也會出現在不同設備的不同時間。這意味着,如果您正在進行更新,並且需要後端更新(通信端更改等),那麼您不知道何時在後端執行「切換」。 – Ted

0

第一應用,你需要有一個API如何跟蹤做的用戶版本已經過時了..

例如您發送您的應用程序當前版本的瀏覽器這樣的API:

String version = String.valueOf(BuildConfig.VERSION_CODE); 

如果response.body()isUpdateRequired(),所以你需要調用這個阿勒特波紋管是真的:

AlertDialog.Builder alertDialog = new AlertDialog.Builder(SplashActivity.this); 
       alertDialog.setTitle("Please update your app"); 
       alertDialog.setMessage("This app version is not supported any longer. Please update your app from the Play Store."); 
       alertDialog.setPositiveButton("UPDATE NOW", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         final String appPackageName = getPackageName(); 
         try { 
          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); 
         } catch (android.content.ActivityNotFoundException anfe) { 
          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName))); 
         } 
        } 
       }); 
       alertDialog.show();