2012-12-07 19 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();