Android代码实现APK的下载安装和卸载<2>

来源:互联网 发布:日本包装设计网站知乎 编辑:程序博客网 时间:2024/05/01 01:53

项目开发使用模板:Android代码实现APK下载安装(代码依赖包afinal_0.5_bin.jar,可资源下载)

afinal 支持断点续传

简介afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少。
在android应用开发中,通过afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动绑定。通过afinal的orm框架,无需任何配置信息,一行代码就可以对android的sqlite数据库进行增删改查操作。同时,afinal内嵌了finalHttp等简单易用的工具,可以轻松的对http请求进行操作。

    protected void showUpdateDialog() {// TODO Auto-generated method stubAlertDialog.Builder builder = new Builder(this);builder.setTitle("提示升级");//builder.setCancelable(false);//强制选择builder.setOnCancelListener(new OnCancelListener() {@Overridepublic void onCancel(DialogInterface arg0) {//代替用户选择,不操作即进入主页面enterHome();arg0.dismiss();}});builder.setMessage(description);builder.setPositiveButton("立即升级",new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {//下载apk,并且替换安装if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//SDcard存在//四大主键,使用插件afinalFinalHttp fh = new FinalHttp();fh.download(apkurl, Environment.getExternalStorageDirectory().getAbsolutePath()+"/mobilesafe2.0.apk", new AjaxCallBack<File>() {@Overridepublic void onFailure(Throwable t, int errorNo,String strMsg) {t.printStackTrace();Toast.makeText(getApplicationContext(), "下载失败", 1).show();super.onFailure(t, errorNo, strMsg);}@Overridepublic void onLoading(long count, long current) {//count总大小,current是当前大小super.onLoading(count, current);int progress = (int)(current * 100 / count);tv_update_info.setText("下载进度:"+progress+"%");}@Overridepublic void onSuccess(File t) {// TODO Auto-generated method stubsuper.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();}}});builder.setNegativeButton("下次再说", new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {arg0.dismiss();enterHome();}});builder.show();}



0 0
原创粉丝点击