从服务器下载最新文件版本

菜鸟

嗨,我有一个应用程序,我试图向其添加内置更新程序。该应用程序包含一个按钮,可从我的服务器下载apk文件。服务器上的文件名命名如下:

“ App-1.apk”,“ App-2.apk”,“ App-3.apk” ...

该按钮当前的设置如下:

download = (Button) findViewById(R.id.bDownload);
versionNum = 3;

download.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent downloadFromServer = new Intent();
        downloadFromServer.setAction(Intent.ACTION_VIEW);
        downloadFromServer.addCategory(Intent.CATEGORY_BROWSABLE);
        downloadFromServer.setData(Uri.parse("http://server.com/Files/App-" + versionNum + ".apk"));
        startActivity(downloadFromServer);
    }
}); 

检查服务器上可用版本最高的应用程序版本并选择该版本进行下载的好方法是什么?

编辑:如何使用Java检查服务器目录中编号最高的应用程序?

Edit2:这就是我最终要做的事情。这不是最好的解决方案,但目前已经足够了:

try {
    PackageInfo appInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
    installedVersion = appInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
    // Handle exception
}   

//Latest version available on my server. Must update this value for each new release
latestVersion = 3.1;

//Convert string value of installed version to double so that it can be compared with value of latest version       
installedVersionValue = Double.parseDouble(installedVersion); 

download = (Button) findViewById(R.id.bDownload);

download.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {

        if (installedVersionValue<latestVersion) { //If latest version available on server is greater than installed version, download the latest
            Intent downloadFromServer = new Intent();
            downloadFromServer.setAction(Intent.ACTION_VIEW);
            downloadFromServer.addCategory(Intent.CATEGORY_BROWSABLE);
            downloadFromServer.setData(Uri.parse("http://server.com/Files//App-" + latestVersion + ".apk"));
            startActivity(downloadFromServer);
        }
        else if (installedVersionValue==latestVersion) { //If user clicks the update button while they already have the latest, let them no what's up
            Toast.makeText(getApplicationContext(), "You are already running the latest version (" + installedVersionValue +")",
            Toast.LENGTH_LONG).show();  
        }
    }
}); 
特奥

您可以在清单中添加代码版本或应用程序版本,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.package.name"
      android:versionCode="2"
      android:versionName="1.1">

您可以检查它:

PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);
int versionNumber = pinfo.versionCode;

您可以在服务器的db表中将代码数量设置为名称,然后检查该字段以更新您的应用程序。

您可以尝试如下操作:

向服务器传递这样的请求: youServer/apkUpdate?versionCode={versionCode}

在您的服务器中,您可以使用以下方法:

@RequestMapping(method = RequestMethod.GET)
public void getUpdatedApk(
        @RequestParam(value = "versionCode", required = true) final Integer versionCode,
        @RequestParam(value = "androidVersion", required = false) final Integer androidVersion,
        final HttpServletRequest request, 
        final HttpServletResponse response) throws Exception{

    apkUpdateService.getUpdate(new Long(versionCode), response);

}

api更新服务在哪里:

public void getUpdate(Long currentVersionCode, HttpServletResponse response) throws Exception {
            //get latest number of apk from a db field
    Long dbVersionCode = apkUpdateRepository.findLastVersion();
    ServletOutputStream servletOutputStream = null;

    if (currentVersionCode == dbVersionCode){
        LOG.info("You have the last version");
        return;
    }

    if (currentVersionCode < dbVersionCode){
        FileInputStream inputStream = null;
        String filename = String.format(pathToApk, dbVersionCode);

        try{
        inputStream = new FileInputStream(filename);


        servletOutputStream = response.getOutputStream();

        byte[] buffer = new byte[1024];
        int bytesRead = 0;

        while ((bytesRead = inputStream.read(buffer)) != -1) {
            servletOutputStream.write(buffer, 0, bytesRead);
        }

        servletOutputStream.flush();
        LOG.info("File streamed");

        LOG.info("Download "+filename);
        }finally{
            if (inputStream!=null){
                inputStream.close();
            }
            if (servletOutputStream != null){
                servletOutputStream.close();
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从FTP服务器下载最新文件

来自分类Dev

使用R从ftp服务器下载最新文件

来自分类Dev

如何使用Paramiko从SFTP服务器仅下载最新文件?

来自分类Dev

使用curl从远程服务器下载最新文件

来自分类Dev

根据时间戳从SFTP服务器下载最新文件

来自分类Dev

期望脚本使用grep从远程服务器下载最新文件

来自分类Dev

FTP:以服务器获取最新文件

来自分类Dev

Python FTP服务器下载文件名中包含特定关键字的最新文件

来自分类Dev

从Unix中的FTP从远程服务器获取最新文件

来自分类Dev

Perl Net :: SFTP :: Foreign从远程服务器获取最新文件

来自分类Dev

unix ftp脚本以从服务器获取最新文件

来自分类Dev

从Unix中的FTP从远程服务器获取最新文件

来自分类Dev

Delphi Indy HTTPS从Web服务器检测到最新文件

来自分类Dev

如何使用Netbeans的FTP客户端从服务器下载新文件

来自分类Dev

在服务器之间更新文件

来自分类Dev

仅同步来自远程服务器的新文件

来自分类Dev

递归搜索目录并列出x个最新文件(基于服务器上的创建日期)

来自分类Dev

告诉wget仅下载目录中的最新文件?

来自分类Dev

如何创建目录,以便同时拥有新文件?(网络服务器)

来自分类Dev

获取有关SFTP服务器上新文件的通知

来自分类Dev

在服务器位置查找新文件的方法有哪些

来自分类Dev

尾部最新文件

来自分类Dev

查找最新文件

来自分类Dev

KDE最新文件

来自分类Dev

游戏补丁程序,检查本地文件和服务器上存储的新文件之间的文件差异

来自分类Dev

上传文件到服务器,处理它,创建一个新文件(txt文件)并提示保存

来自分类Dev

C#WinSCP .NET程序集从最新目录下载最新文件

来自分类Dev

使用Paramiko将新文件上传到SFTP服务器,而不必覆盖现有文件

来自分类Dev

如何将文件从表单上传到服务器并存储在新文件夹中

Related 相关文章

  1. 1

    从FTP服务器下载最新文件

  2. 2

    使用R从ftp服务器下载最新文件

  3. 3

    如何使用Paramiko从SFTP服务器仅下载最新文件?

  4. 4

    使用curl从远程服务器下载最新文件

  5. 5

    根据时间戳从SFTP服务器下载最新文件

  6. 6

    期望脚本使用grep从远程服务器下载最新文件

  7. 7

    FTP:以服务器获取最新文件

  8. 8

    Python FTP服务器下载文件名中包含特定关键字的最新文件

  9. 9

    从Unix中的FTP从远程服务器获取最新文件

  10. 10

    Perl Net :: SFTP :: Foreign从远程服务器获取最新文件

  11. 11

    unix ftp脚本以从服务器获取最新文件

  12. 12

    从Unix中的FTP从远程服务器获取最新文件

  13. 13

    Delphi Indy HTTPS从Web服务器检测到最新文件

  14. 14

    如何使用Netbeans的FTP客户端从服务器下载新文件

  15. 15

    在服务器之间更新文件

  16. 16

    仅同步来自远程服务器的新文件

  17. 17

    递归搜索目录并列出x个最新文件(基于服务器上的创建日期)

  18. 18

    告诉wget仅下载目录中的最新文件?

  19. 19

    如何创建目录,以便同时拥有新文件?(网络服务器)

  20. 20

    获取有关SFTP服务器上新文件的通知

  21. 21

    在服务器位置查找新文件的方法有哪些

  22. 22

    尾部最新文件

  23. 23

    查找最新文件

  24. 24

    KDE最新文件

  25. 25

    游戏补丁程序,检查本地文件和服务器上存储的新文件之间的文件差异

  26. 26

    上传文件到服务器,处理它,创建一个新文件(txt文件)并提示保存

  27. 27

    C#WinSCP .NET程序集从最新目录下载最新文件

  28. 28

    使用Paramiko将新文件上传到SFTP服务器,而不必覆盖现有文件

  29. 29

    如何将文件从表单上传到服务器并存储在新文件夹中

热门标签

归档