版本更新(状态栏显示下载进度,并且下载完之后进行自动安装)

在这里主要说明进度在状态栏显示,下载完成自动安装,关于下载大家可以自行查阅,我是用的FileDownLoader

1.在下载任务正式开始的时候(connected),我们需要进行初始化通知

//初始化通知
private void initNotification() {
    notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
   builder = new NotificationCompat.Builder(this);
    builder.setContentTitle("正在更新...") //设置通知标题
            .setSmallIcon(R.mipmap.ic_launcher_round)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round)) //设置通知的大图标
            .setDefaults(Notification.DEFAULT_LIGHTS) //设置通知的提醒方式: 呼吸灯
            .setPriority(NotificationCompat.PRIORITY_MAX) //设置通知的优先级:最大
            .setAutoCancel(false)//设置通知被点击一次是否自动取消
            .setContentText("下载进度:" + "0%")
            .setProgress(100, 0, false);
    //构建通知对象
    notification = builder.build();
}

2.在进度progress方法中进行实时更新数据

builder.setProgress(totalBytes, soFarBytes,false);  //顺序为总大小,实时大小
builder.setContentText("下载进度:" + (int)((double)soFarBytes/totalBytes * 100) + "%");
notification = builder.build();
notificationManager.notify(1, notification);

3.在完成(completed)的方法里进行安装

private void installApk(File file) {
    //新下载apk文件存储地址
    File apkFile = file;
    Intent intent = new Intent(Intent.ACTION_VIEW);
    //判断是否是AndroidN以及更高的版本
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri contentUri = FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);
        intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
    } else {
        intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    startActivity(intent);
    notificationManager.cancel(1);//取消通知

}

在安装这块需要我们进行一系列的设置,不然的话会报exposed beyond app through Intent.getData()的错

1.首先在清单文件中进行配置


      //第二步中写

2.在res下面新建一个xml文件夹,并在其下创建一个xml文件  file_paths


    
       //除了包名,其他都可改可不改,.的意思是什么路径都可以

3.上面的第三步中必须写全

总结:这样就完成了你的需求,记得一定要打开这个软件的通知,不然通知栏不会显示的,拜~

你可能感兴趣的:(版本更新(状态栏显示下载进度,并且下载完之后进行自动安装))