简介
在进行app开发时,大部分情况下我们需要将应用上传到第三方市场。然而,在上传到像Google这样比较特殊的市场时,我们如何在应用内部进行版本更新判断呢?如果你的应用有自己的后台服务,那么可以使用后台服务器来进行版本判断。但对于没有后台服务的开发者来说该怎么办呢?接下来,我们将讨论一种没有后台服务器的解决办法。 ```
检测版本更新
如何在Google Play市场上检测应用版本更新呢?由于Google并未提供直接的API或友好的链接来获取版本信息,但它提供了一个应用程序的地址,例如:https://play.google.com/store/apps/details?id=com.xxx.xxx。这里的com.xxx.xxx是您应用程序的包名。那么我们可以利用这个地址进行操作。通过在浏览器中打开该地址,我们可以获取到应用程序的详细信息,包括版本号。相信大家已经明白了具体操作步骤,在代码中直接请求该地址,并获取其中内容以检索出版本号。下面是具体实现代码:
```java public class CheckVersionAsyncTask extends AsyncTask { Context context; String currentVersion; // Google Play 上的版本 String oldVersion; // 目前的 app 版本 public CheckVersionAsyncTask(Context context, String version) { this.context = context; this.oldVersion = version; } @Override protected Boolean doInBackground(String... params) { boolean result = false; String url = params[0]; //請在 excecute 時傳入你 google play 的 url 位置,不是 market 喔,要 http HttpPost post = new HttpPost(url); AndroidHttpClient client = AndroidHttpClient.newInstance(android); BufferedReader reader = null; try { HttpResponse response = client.execute(post); reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String line; String content =; Pattern pattern= Pattern.compile(\softwareVersion\\\W*([\\d\\.]+)); while((line=reader.readLine()) != null){ Matcher matcher= pattern.matcher(line); if(matcher.find()){ Log.v(ids, ver.: + matcher.group(1)); currentVersion=matcher.group(1); } content += line; } /* * 檢查版本,在此使用的是我們自定的版本名稱 , * 並不是版本號 * 請特別注意這一點 */ if(currentVersion.compareTo(oldVersion)>0) result=true; Log.v(ids, content); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } } ``````java private void updateApp() { String packageName = context.getPackageName(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(market://details?id= + packageName)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } ``` ```java /** * 更新应用程序 */ private void updateApp() { String packageName = context.getPackageName(); // 创建跳转到应用商店的意图 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(market://details?id= + packageName)); // 设置标志位,以新任务的方式启动意图 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 启动意图,跳转到应用商店页面进行更新操作 startActivity(intent); } ```这是解决链接问题的关键所在,为什么这样做就不再赘述。
实现
前面已经把方法都现实了,剩下的就是调用了,我们可以在任意地方调用如下方法获取版本比较,代码如下:
```java private void checkUpdateApp() { try { String packageName = getPackageName(); //因为这个是Google的网址,所以请求的时候需要翻墙在能正常请求到数据(注:这个请求要保证本app已经上传到Google Play) String url = https://play.google.com/store/apps/details?id= + packageName; //TODO: 在此处添加代码逻辑 } catch (Exception e) { e.printStackTrace(); } } ``` ```java /** * 检查更新应用程序 */ private void checkUpdateApp() { try { String packageName = getPackageName(); // 由于该链接是Google的网址,所以在发送请求之前需要使用翻墙工具才能正常获取数据(注意:确保本应用已经上传至Google Play) String url = https://play.google.com/store/apps/details?id= + packageName; // TODO: 在此处添加代码逻辑 } catch (Exception e) { e.printStackTrace(); } } ``` ```java /** * 检查更新应用程序 */ private void checkUpdateApp() { try{ String packageName = getPackageName(); // 由于该链接是 Google 的网址,因此在发送请求之前需要使用 VPN 才能正常获取数据(注意:请确保本应用已经上传至 Google Play) String url =https://play.google.com/store/apps/details?id= +packageName; // TODO: 在此处添加代码逻辑 }catch(Exception e){ e.printStackTrace(); } } ```参考文章
Android 应用程序版本更新检查功能已经上架至 Google Play
还木有评论哦,快来抢沙发吧~