利用代码下载Apk

需要在AndroidManifest.xml中加入权限:

//读写权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
//网络权限
<uses-permission android:name="android.permission.INTERNET"/>

用Xuits网络请求:

创建App类:

public class App extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
        x.Ext.setDebug(BuildConfig.DEBUG);
    }
}
 
记得在AndroidManifest里引用:
android:name=".app.App"

在MainActivi里操作:
创建downLoad方法:
private void downLoad() {
    //需要下载的Apk地址
    String url = "http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk";
    //保存到SDcard的路径
    String path = Environment.getExternalStorageDirectory() + "/apk/myapk.apk";
    final File file = new File(path);
    RequestParams requestParams = new RequestParams(url);
    //断点续传
    requestParams.setAutoResume(true);
    requestParams.setAutoRename(false);
    requestParams.setSaveFilePath(path);
    x.http().get(requestParams, new Callback.ProgressCallback<File>() {
        @Override
        public void onSuccess(File result) {
		//调用自动安装Apk的方法
            Toast.makeText(MainActivity.this, "正在安装中......", Toast.LENGTH_SHORT).show();
            installAPK(result);
        }

        @Override
        public void onError(Throwable ex, boolean isOnCallback) {

        }

        @Override
        public void onCancelled(CancelledException cex) {

        }

        @Override
        public void onFinished() {
            progressDialog.dismiss();
        }

        @Override
        public void onWaiting() {

        }

        @Override
        public void onStarted() {
	//调用下载进度的方法
            showProgressDialog();
        }

        @Override
        public void onLoading(long total, long current, boolean isDownloading) {
            float progress = (float) current / (float) total * 100;
            if (progress >= 0 && progress <= 100) {
                progressDialog.setProgress((int) progress);
            }
        }
    });
}
//设置下载进度,把PrograssDialog设置成全局变量
private void showProgressDialog() {
    progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("正在下载......");
    progressDialog.setProgress(0);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.show();
}
//设置自动安装Apk的方法
//自动安装Apk
private void installAPK(File savedFile) {
    //调用系统的安装方法
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setDataAndType(Uri.fromFile(savedFile), "application/vnd.android.package-archive");
    startActivity(intent);
}
最后在onCreate调用downLoad()方法即可
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值