安卓 文件下载

文件下载主要代码也不多,使用原生的DownloadManage来实现该功能:

AndroidManifest中添加权限

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />网络访问权限是必须的,下载地址为sdcard的话需要添加sdcard写权限。 

 // 测试文件下载地址(格式为http://..../文件名.文件类型)

String url = "http://soft3.xzstatic.com//1210/BatchDoc_DownZa.Cn.rar";  

// 实例化requset对象

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

// 设置在什么网络情况下进行下载(默认为任意网络)

// request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE);

// 设置通知栏标题(手机系统不同,有些可能不显示;这里设置的是下载完成后仍然显示,还有完成后就不显示的等)

request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

// 设置下载时通知显示的标题

request.setTitle(getFileName(url));

// 设置下载时通知显示的提示

request.setDescription("正在下载");

// 用于设置漫游状态下是否可以下载

request.setAllowedOverRoaming(false);

// 设置文件存放目录(前一个为文件保存路径,可自定义;后一个为保存后的文件名及类型)

request.setDestinationInExternalPublicDir("/" + ConfigUtil.ROOT_FILE + "/download/", getFileName(url));

// 获取系统通知服务

downManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);

// 获取每一条通知的id(唯一)

id = downManager.enqueue(request);

DownLoadCompleteReceiver receiver = new DownLoadCompleteReceiver();

// 注册下载完成/未完成的广播

LeaderDetailActivity.this.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

LeaderDetailActivity.this.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_NOTIFICATION_CLICKED));

// 广播响应事件

private class DownLoadCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)){
            // 下载成功操作
        }else if(intent.getAction().equals(DownloadManager.ACTION_NOTIFICATION_CLICKED)){
            downManager.remove(id);
            // 下载取消(在未完成时点击通知触发)
        }
    }
}

//  获取文件名与类型
public String getFileName(String pathandname){

// 获取链接中最后一个/的下标
    int start = pathandname.lastIndexOf("/");
    int end = pathandname.lastIndexOf(".");
    if(start != -1 && end != -1){
        return pathandname.substring(start+1,pathandname.length()); //截取获得:文件名.文件类型
    }else{
        return null;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

คิดถึง643

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值