Google应用程序版本已更新

访客 233 0
```html

简介

在进行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

标签: 版本 链接 代码 地址

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~