安卓新版本升级,并自动安装apk

来源:互联网 发布:差分演化算法及其应用 编辑:程序博客网 时间:2024/05/29 04:35
记得添加intenet权限,和sdcard的读写权限
public class MainActivity extends AppCompatActivity {    private String url = "具体下载新的apk的路劲";    private int versionCode;    private ProgressDialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        x.view().inject(this);        //得到当前的版本号,由于没有发布,所以无法得到新版本,暂时可以加页可以不加        try {            versionCode = getPackageManager().getPackageInfo(getPackageName(), 0)
.versionCode;        } catch (Exception e) {            e.printStackTrace();        }
//发现新版本你的时候弹出对话框        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setTitle("发现新版本是否升级?");        builder.setPositiveButton("升级", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                initData();            }        });        builder.setNegativeButton("取消", null);        builder.create().show();    }    private void initData() {        //设置文件下载的位置和文件名字        String path = Environment.getExternalStorageDirectory().
getPath() + "/app.apk";        RequestParams params = new RequestParams(url);        //设置程序不重新给下载的文件重新设置名字        params.setAutoRename(false);        //设置断点续传        params.setAutoResume(true);        //设置下载保存的路径        params.setSaveFilePath(path);        x.http().get(params, new Callback.ProgressCallback<File>() {            @Override            public void onSuccess(File result) {                Intent intent = new Intent(Intent.ACTION_VIEW);//                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//可加可不加
//第一个参数是你下载的文件,第二个是固定内容,可直接复制                intent.setDataAndType(Uri.fromFile(result), 
"application/vnd.android.package-archive");                startActivity(intent);            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {            }            @Override            public void onCancelled(CancelledException cex) {            }            @Override            public void onFinished() {                if (dialog != null & dialog.getProgress() >= 100 && 
dialog.isShowing()) {                    dialog.dismiss();                    Toast.makeText(MainActivity.this, "升级完成", 
Toast.LENGTH_SHORT).show();                }            }            @Override            public void onWaiting() {            }            @Override            public void onStarted() {                //初始化ProgressDiaLog                initProgressDiaLog();            }            @Override            public void onLoading(long total, long current, boolean isDownloading) 
{                //判断是否是在下载中,可加也可不加                if (isDownloading) {                    //算出来当前进度                    int progress = (int) (current * 100 / total );                    //把进度设置给progressBar                    dialog.setProgress(progress);                }            }        });    }    //创建进度条    private void initProgressDiaLog() {        dialog = new ProgressDialog(this);        dialog.setTitle("正在下载中...");        dialog.setProgress(0);        dialog.setCancelable(false); //设置不可点击界面之外的区域让对话框消失        //设置进度条的样式        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        dialog.show();    }}
原创粉丝点击