安卓apk下载安装

在安卓中apk的安装是调用第三方的一个类。利用意图(Intent)来调用第三方的类:

例:在这里是通过一个提醒框当点击“立即升级”时,进行下载 在下载中实现三个方法(下载失败、下载中、下载成功)在下载成功的方法中调用一个安装的方法 在安装的方法中我们利用intent来实现安装。

 private void showUpdateDialog() {
		// TODO Auto-generated method stub
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("升级提醒");
		builder.setMessage(description);
		builder.setPositiveButton("立刻升级", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int arg1) {
				// 进行升级操作
				if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
					FinalHttp finalHttp = new FinalHttp();
					finalHttp.download(apkurl, 
							Environment.getExternalStorageDirectory().getAbsolutePath() + "/mobilesafe2.0.apk", 
							new AjaxCallBack<File>() {

								@Override
								public void onFailure(Throwable t, int errorNo,
										String strMsg) {
									// 下载失败
									super.onFailure(t, errorNo, strMsg);
									Toast.makeText(getApplicationContext(), "下载失败", 1).show();
								}

								@Override
								public void onLoading(long count, long current) {
									// 正在下载
									super.onLoading(count, current);
									//进度的百分比
									long progress = current * 100 / count;
									tv_showupdate_progress.setText("下载进度:" + progress+ "%");
								}

								@Override
								public void onSuccess(File t) {
									// 下载成功
									super.onSuccess(t);
									installApk(t);
								}

								private void installApk(File t) {
									// 安装apk
									Intent intent = new Intent();
									intent.setAction("android.intent.action.VIEW");
                                                                        //添加类型
									intent.addCategory("android.intent.category.DEFAULT");
									intent.setDataAndType(Uri.fromFile(t), "application/vnd.android.package-archive");
									startActivity(intent);
								}
						
							});
				} else {
					Toast.makeText(getApplicationContext(), "请检查外部存储设备是否安装", 1).show();
				}
			}
		});
		builder.setNegativeButton("下次再说", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int arg1) {
				// 关闭对话框,进入主界面
				dialog.dismiss();
				enterHome();
			}
		});
		builder.show();
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值