Android—App在线更新后不会自启动解决办法!

本文介绍了在Android应用中实现在线自动检测更新的功能。当App启动时,通过欢迎界面检测版本,若发现更新则下载。问题在于,更新安装后应用无法自动重启。解决方案是在当前Activity中进行下载,下载完成后关闭Activity,确保更新后能正常启动。

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

        做项目的时候,公司要求自己写App在线自动检测更新,App启动是的flash界面也就是欢迎界面开始检测版本,不一样就下载;

在这里就出现一个问题,下载完了就开始安装替换,替换完了,程序没启动!但是,如果我进入其他Acitivity,然后子线程还在下载,那么下载完了还能自启动;所以就干脆在当前Activity下载,下载完了finish就可以了。如蓝色字体的代码


builder.setPositiveButton("立刻升级", new OnClickListener() {

@Override
public void onClick( DialogInterface dialog, int which) {
showDownloadDialog() ;
// 下载APK,并且替换安装
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
// sdcard存在
// afnal
FinalHttp finalhttp = new FinalHttp();
finalhttp.download(apkUrl, Environment.getExternalStorageDirectory().getAbsolutePath()+"/BusinessAPP_V3.apk",
new AjaxCallBack<File>(){
@Override
public void onFailure(Throwable t, int errorNo,String strMsg) {
t.printStackTrace();
Toast.makeText(getApplicationContext(), "下载失败", 1).show();
super.onFailure(t, errorNo, strMsg);
enterHome();
}

@Override
public void onLoading(long count, long current) {
// TODO Auto-generated method stub
super.onLoading(count, current);
tv_update_info.setVisibility(View.VISIBLE);
tv_update_info_text.setVisibility(View.VISIBLE);
//当前下载百分比
   progress = (int) (current * 100 / count);
tv_update_info.setText(progress+"%");
System.out.println("---------------------------->progress:"+progress);
handler.sendEmptyMessage(66);
if(progress==100){
finish(); //下载完后要销毁当前Activity,否则不会自启动
mdialog.dismiss();
}

}


@Override
public void onSuccess(File t) {
// TODO Auto-generated method stub
super.onSuccess(t);
installAPK(t);
}
/**
* 安装APK
* @param t
*/
private void installAPK(File t) {
 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(), "没有sdcard,请安装上在试",0).show();
return;
}
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值