Android开发进阶系列(五) 连接服务器下载文件或资源

本文是Android开发进阶系列的第五篇,主要讲解如何连接服务器进行APK更新和下载资源文件。通过创建version.txt记录版本号,并在MainActivity中检查更新。使用UpdateService后台下载并展示通知栏进度。下载资源文件时,需弹出等待进度条,成功或失败后进行相应处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于简单的应用程序,很少会需要连接服务器,单机运行就行了。但是当你需要不断更新软件版本,或者你的APP需要用到大量的资源而直接打包进APK文件太大,这时你就需要连接到服务器去下载文件。下面这个项目就提供了如何连接服务器更新APK和如何下载资源的方法。

连接服务器更新APK

  1. 服务器上放置一个记录版本号的txt文件,比如version.txt。放置一个用于更新的APK,比如new.apk

    final static String strurl = "http://www.xxx.com/my/version.txt";
    final static String strurl_apk = "http://www.xxx.com/my/new.apk";
  2. MainActivity的onCreate()方法中调用CheckUpdate()方法

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
    
        ......
        CheckUpdate(); // 检查更新
    }
  3. 连接服务器前当然要先判断网络连接,如果是要下载到SD卡的,还要判断是否有SD卡,判断的代码很简单就不贴上了。

    // 检查更新
    private void CheckUpdate(boolean isAuto) {
        // 判断版本号,然后下载   
        downloader = new HttpDownLoader();
        int serverVersion = 1;
        serverVersion = Integer.parseInt(FusionField.downloader.downLoadText(strurl));
        if(serverVersion > localVersion) {
            AlertDialog.Builder builder = new Builder(this); 
            builder.setTitle("软件升级")
                    .setMessage("发现新版本,是否升级!")
                    .setPositiveButton("升级",new DialogInterface.OnClickListener() { 
                        @Override
                        public void onClick(DialogInterface dialog, int which) { 
                            //开启更新服务UpdateService
                            //这里为了把update更好模块化,可以传一些updateService依赖的值
                            //如布局ID,资源ID,动态获取的标题,这里以app_name为例
                            Intent updateIntent =new Intent(MainActivity.this, UpdateService.class);
                            startService(updateIntent);
                        }
                    })
                    .setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { 
                        @Override
                        public void onClick(DialogInterface dialog, int which) { 
                            dialog.dismiss(); 
                        } 
                    });
            builder.create().show(); 
        }
    }
  4. UpdateService.class执行后台下载和通知栏下载进度条的更新

    public class UpdateService extends Service{
         
         
    
    //文件存储
    private File updateDir = null;
    private File updateFile = null; 
    public static String downloadDir = "/download/";
    
    //通知栏
    private NotificationManager updateNotificationManager = null;
    private Notification updateNotification = null;
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值