1

我可以从自己的网站检索字符串数据吗?实际上,如果市场上有任何可用的新版本,我想提示用户更新我的应用程序。为此,我有一个网站,上面有应用程序链接。每次我更新我的应用程序时,我都会在网站上放置一个版本字符串。现在我想以某种方式获取该字符串数据并将其与我的版本代码进行比较。如果两者之间有任何差异,将提示用户进行更新。

例如,如果我的应用程序版本代码为 21,并且网站字符串的数据为 22,那么这意味着我的应用程序有新的更新可用,并且应提示用户下载它。任何人都可以通过告诉我 hopw 将该字符串数据放到网站以及如何在我的 android 应用程序中检索该数据来帮助我实现这个想法吗?提前谢谢。

4

3 回答 3

0

我正在使用您正在寻找的相同功能。我在 MainActivity 的 OnCreate 上调用了 networkUpdate()。

  1. 该功能创建了单独的线程并在线获取最新版本号。
  2. 获取此二进制文件的版本号
  3. 在 toast 中显示自定义消息(新版本提醒)

在线文本文件

{"version":"1.2","message":"News version of XXX is available. Please download at Google Play"}

android中的源代码

    private Handler m_handler;
@Override
    protected void onCreate(Bundle savedInstanceState) {

    ...............

    m_handler = new Handler();  //for main thread
    networkUpdate();
    }

private void networkUpdate(){ 


    Thread t = new Thread(new Runnable() {

          @Override 
          public void run() { //heavy loading 
              ObjectMapper mapper = new ObjectMapper();
              try {
                  HttpClient client = new DefaultHttpClient();
                    HttpGet request = new HttpGet(
                            "http://xxx/version.txt");
                    HttpResponse response = client.execute(request);
                    String retSrc = EntityUtils.toString(response.getEntity());

            JsonNode networkJson =  mapper.readTree(retSrc);
            PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
            String version = pInfo.versionName;
            String networkVersion = networkJson.path("version").textValue();
            if(Float.valueOf(version) < Float.valueOf(networkVersion)){
                m_updateMessage = networkJson.path("message").textValue();
            }
            System.out.println(version + "v "+ networkVersion + " m " +networkJson.path("message").textValue());
            } catch (Exception e) {
                Log.e("network update", "read version json", e);
            }
              m_handler.post(new Runnable() {

          public void run() { //main thread

              if(m_updateMessage != null){
                  Toast.makeText(MainActivity.this, m_updateMessage, Toast.LENGTH_LONG).show();
              }

          } }); } }); t.start();


}   
于 2013-06-20T03:55:17.440 回答
0

如果您在 Google Play 中发布您的应用程序,那么 Google Play 会为您处理它。

但是,如果您不通过内置此更新机制的某个应用商店,那么您可以在任何 Web 服务器(例如 Apache)上托管一个静态页面,并使用 URL 连接到该页面并检索该值。

于 2013-06-18T05:37:37.637 回答
0

是的,您可以通过在您的站点上添加 Checking Updates WebService 来做到这一点。
当您想检查应用程序的任何更新时,您的应用程序将从该 Web 服务调用方法,该方法返回版本,然后您可以与之比较并执行更新,

于 2013-06-18T05:37:53.933 回答