android apk下载 安装程序,Android之APK的下载安装

该博客介绍了一个Android应用程序如何实现从服务器下载APK文件并自动安装的过程。关键点包括SD卡文件读写、使用ProgressDialog显示下载进度、在后台线程下载文件以及安装APK。APK文件需预先上传至服务器。

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

功能描述:

1. 下载远程服务器端的APK文件

2. 同步显示下载进度

3. 下载完成自动安装

关键技术点:

1. SD卡文件读写

2. ProgressDialog的使用

3. 分线程请求网络

4. 安装APK

要下载的APK要提前安装到服务器的WEB内容中

public void downloadAPK(View v){

//1.启动主线程,显示提示视图:ProgressDialog

final ProgressDialog dialog = new ProgressDialog(this);

dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

dialog.show();

//准备用于保存APK文件的File对象:/storage/sdcard/Android/package_name/files/xxx.apk

apkFile = new File(getExternalFilesDir(null),"update.apk");

//2.启动分线程,请求下载APK文件,下载过程中显示下载进度

new Thread(new Runnable() {

@Override

public void run() {

try {

// 1).得到连接对象

String path = "http://192.168.51.65:8080/web/ActivityDemo.apk";

URL url = new URL(path);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

// 2).设置

//connection.setRequestMethod("GET");默认

connection.setConnectTimeout(5000);

connection.setReadTimeout(1000);

// 3).连接

connection.connect();

// 4).请求并得到响应码200

int responseCode = connection.getResponseCode();

if(responseCode==200){

//设置dialog的最大进度

dialog.setMax(connection.getContentLength());

// 5).得到包含APK文件数据的InputStream

InputStream is = connection.getInputStream();

// 6).创建指向apkFile的FileOutputStream

FileOutputStream fos = new FileOutputStream(apkFile);

// 7).边读边写

byte[] buffer = new byte[1024];

int len = -1;

while((len=is.read(buffer))!=-1){

fos.write(buffer,0,len);

// 8).显示下载进度

dialog.incrementProgressBy(len);

//休息一会(模拟网速慢 时)

//Thread.sleep(50);

SystemClock.sleep(50);

}

fos.close();

is.close();

}

// 9).下载完成,关闭,进入3.

connection.disconnect();

//3.主线程,移除Dialog,启动安装

runOnUiThread(new Runnable() {

public void run() {

dialog.dismiss();

installAPK();

}

});

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

}

/**

* 启动安装APK

*/

private void installAPK(){

Intent intent = new Intent("android.intent.action.INSTALL_PACKAGE");

intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");

startActivity(intent);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值