HttpURLConnection 后台下载APK文件
HomeActivity app = HomeActivity.homeActivity();
SpTryListenData spData = SpTryListenData.getInstance();
String httpUrl="xxxxxxxxxxxxxxxxxxx";
Log.e("","cynos:downLoad state = 0");
final String fileName = "MobileMusic503_014732W_feiyinghe.apk";
Log.e("","cynos:downLoad state = 1");
int downLoad_num = 0;
boolean downOK=false;
final File file = new File(spData.downloadDir.getPath()+ "/" + fileName);
Log.e("","cynos:downLoad state = 2");
try {
URL url = new URL(httpUrl);
Log.e("","cynos:downLoad state = "+httpUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(60000);//jdk 1.5换成这个,连接超时
conn.setReadTimeout(60000);//jdk 1.5换成这个,读操作超时
InputStream is = conn.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[256];
Log.i("Test", "cynos:downLoad wait");
conn.connect();
Log.i("Test", "cynos:downLoad connect OK !is downloading now");
double count = 0;
int downTime=0;
int fileLength = conn.getContentLength();
Log.i("Test", "cynos:maxSize = "+fileLength);
if (conn.getResponseCode() >= 400) {
} else {
boolean wifi=false;
while (count <= 100) {
if (is != null) {
int numRead = is.read(buf);
int loading = (downLoad_num/(fileLength/100));
Log.e("", "cynos:downLoad_num = " + downLoad_num+"/"+fileLength+" 进度:"+loading);
Message message=handler.obtainMessage();
message.what=100;
message.obj=loading;
handler.sendMessage(message);
downLoad_num += numRead;
downTime++;
if (numRead <= 0) {
break;
} else {
fos.write(buf, 0, numRead);
}
} else {
break;
}
}
}
Log.i("Test", "over:downLoad_num " + downLoad_num);
Log.i("Test", "over:fileLength " + fileLength);
if (downLoad_num+100 >= fileLength)
{
mProgress.dismiss();
app.notifyShowToast("已下载咪咕音乐客户端 "+"\n"+file.getPath());
Log.e("", "cynos:downLoad_num = "+file.getPath());
Intent intent = new Intent();
//执行动作
intent.setAction(Intent.ACTION_VIEW);
//执行的数据类型
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse("file://" +file.getPath()), "application/vnd.android.package-archive");
startActivity(intent);
}
conn.disconnect();
fos.close();
is.close();
// TODO Auto-generated catch block
e.printStackTrace();
app.hideProgressBar();
app.notifyShowToast("下载失败,请检查网络连接或重新下载");
}
return file;
}
AlertDialog.Builder builder = new Builder(TryListenListActivity.this);
builder.setTitle("下载咪咕音乐客户端");
builder.setMessage("下载咪咕音乐客户端,获得海量精品音乐是否下载?");
builder.setPositiveButton("确定下载", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
// HomeActivity app = HomeActivity.homeActivity();
// app.showProgressBar("请稍候,正在下载"+"0%");
mProgress = new ProgressDialog(TryListenListActivity.this);
mProgress.setMessage("正在下载,请稍后"+"0%");
mProgress.setIndeterminate(false);
mProgress.setCancelable(false);
mProgress.show();
}
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
download();
}
}).start();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
builder.create();
builder.show();
}
private ProgressDialog mProgress = null;
public void handleMessage(android.os.Message msg) {
if(msg.what==100){
final int a=(Integer) msg.obj;
Log.e("", "cynos:downLoad_num = "+ a);
HomeActivity app = HomeActivity.homeActivity();
final String b=String.valueOf(a);
new Handler().post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mProgress.setMessage("正在下载,请稍后"+b+"%");
}
});
}
};
};
HttpURLConnection 后台下载APK文件相关推荐
- Android项目实战(三十一):异步下载apk文件并安装(非静默安装)
前言: 实现异步下载apk文件 并 安装.(进度条对话框显示下载进度的展现方式) 涉及技术点: 1.ProgressDialog 进度条对话框 用于显示下载进度 2.AsyncTask ...
- Android——下载apk文件,并在通知栏显示下载进度
如何下载apk文件?这里介绍两种方式:一通过异步任务读取文件,二利用系统方法DownloadManager进行下载. 通过异步任务下载apk 文件 public String downloadAsAp ...
- 下载apk文件之后变成zip的解决办法
APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...
- IIS不能下载.apk文件
IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. 打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 单击MIME类型下的" ...
- 微信公众号手机无法直接下载APK文件是怎么回事
需求:在微信h5页面中下载第三方app -- 安卓, 直接下载apk文件包:iphone,跳转AppStore 分析:微信不支持,在微信中屏蔽了apk文件的下载以及AppStore的跳转(且除非和TX ...
- 使用FileDownloader下载文件(举例版本更新下载apk文件)
1.当我们把本地的版本号和服务器上的版本号进行对比,如果不一致,那么就进行版本更新,为了增加App的友好性,我们最好加一层Dialog框进行询问是否更新,当点击确定时再弹出popupwindow进行下 ...
- PHP下载APK文件
PHP下载APK文件(代码如下) /*** //这里不要随便打印文字,否则会影响输出的文件的* (例如下载没问题,但是apk安装时候提醒解析安装包错误)* @return array*/public ...
- android 打开h5文件下载,微信h5页面下载app —— 安卓直接下载apk文件包,IOS跳转AppStore的实现代码...
需求:微信h5页面下载app -- 安卓直接下载apk文件包,IOS跳转AppStore 分析:微信不支持,在微信中屏蔽了apk文件的下载以及AppStore的跳转(且除非和TX有合作的应用,否则也不 ...
- 微信内浏览器不支持下载APK文件的解决方案 微信中点击链接调用外部浏览器打开
需求:在微信h5页面中下载第三方app -- 安卓, 直接下载apk文件包:iphone,跳转AppStore 分析:微信不支持,在微信中屏蔽了apk文件的下载以及AppStore的跳转(且除非和TX ...
最新文章
- POJ 1017 Packets 贪心 模拟
- JAVA多线程和并发基础面试问答
- WCF 基础之契约(Contract)[转]
- 当前分支上有未提交的更改时签出另一个分支
- python入门代码示例-这可能是最好玩的python GUI入门实例!
- getId()方法的作用
- SQL 性能优化梳理,干掉慢SQL!
- 模拟计算机网络中的零比特填充
- Silverlight 入门
- JS根据文本框内容匹配并高亮显示
- oracle脱机什么意思,脱机的是什么意思
- 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.
- python基础1之 由来、种类、优缺点、安装环境
- underscore 系列之内部函数 restArgs
- 如何查找hp计算机的生产日期,旗捷支招 | 如何识别惠普打印机的生产日期
- 城管系统服务器,数字城管系统建设方案详细.doc
- Python3学习笔记(1): print函数用法总结
- Java控制excel,word文档只读模式
- 3.java基础--- if、switch语句编程题
- 戴老师论文阅读:Two-Timescale Channel Estimation for Reconfigurable Intelligent Surface Aided Wireless...
热门文章
- Notice: Undefined offset:——屏蔽掉notice
- VirtualBox 共享文件夹 挂载点设置
- ctfshow 摆烂杯
- [分支限界]给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置共有多少种路径
- Segmentfault 内容精选 - 2017 年第 30 周
- cartographer保存地图
- Blu-ray Disc的简单介绍
- 人事档案管理c语言程序,人事档案管理完整系统c语言.doc
- “限制20%可保留带宽”是真的吗
- 2023年淮阴工学院五年一贯制专转本应用文写作考试大纲