在安卓中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();
}

1797

被折叠的 条评论
为什么被折叠?



