安卓中实现如何让下载好的apk自动进入安装界面

下载好的apk自动进入安装界面

前言:
如何实现下载功能在这里就不多说了,我用的是xutils开源框架实现的。这里我主要讲的是如何让下载好的apk自动跳入安装界面而已。这个需求主要是对于软件的升级更新所用
实现步骤:
1、查看安卓系统上层的源码,找到PackageInstaller层的配置文件(AndroidManifest.xml) 点击下载安卓系统源码
2、在配置文件中查看意图配制信息,如下图

3、编写对于的安装方法:
  private void installapk(File file) {
        //配置apk安装入口,查看源码的主配置可知
        Intent intent=new Intent("android.intent.action.VIEW");
        intent.addCategory("android.intent.category.DEFAULT");
        //文件作为数据源,且设置安装的类型
        intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
       // startActivity(intent);这个是正常开启另一activity的方式,下面的是通过隐式意图开启
	//隐式意图开启时需要实现对应的onActivityResult()方法
        startActivityForResult(intent,0);
    }
隐式意图方法的回调
//开启一个activity后,返回结果调用的方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        enterMainActivity();
        super.onActivityResult(requestCode, resultCode, data);
    }


对上述方法来个简单解释。
参数传入的File file表示下载好的文件。因为此方法是在下载成功后调用的。而xutils框架有对于的下载成功的方法,下载成功的方法有对于的返回值file。算了,我还是贴一下用xutils下载流程的代码吧。(看成功回调方法即可)点击下载xutils框架jar包
    /**
     * 下载更新的apk方法
     */
    private void downApk() {
        //1、判断SD卡是否插上
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            //2、获取SD卡路径
            String path=Environment.getExternalStorageDirectory().getAbsolutePath()+ 
		File.separator+"360soft1.apk";
            Log.i(tag,"保存在"+path);
            //3、发送请求,获取apk安装包并且保存到指定位置
            HttpUtils httpUtils=new HttpUtils();

            //4、发送请求,传递参数,第三个参数表示请求的回调方法,判断成功与否
            httpUtils.download(mVersionUrl, path, new RequestCallBack<File>() {
                @Override
                public void onSuccess(ResponseInfo<File> responseInfo) {
                   //下载成功
                    File file = responseInfo.result;
                    Log.i(tag,"下载成功");
                    //提示用户安装,这里调用安装方法
                    installapk(file);
                }

                @Override
                public void onFailure(HttpException e, String s) {
                    //下载失败
                    Log.i(tag,"下载失败");
                }

                //刚刚开始下载
                @Override
                public void onStart() {
                    super.onStart();
                    Log.i(tag,"开始下载");
                }
                /**
                 *
                 * @param total 下载文件的总大小
                 * @param current 当前下载位置
                 * @param isUploading 是否正在下载中
                 */
                @Override
                public void onLoading(long total, long current, boolean isUploading) {
                    super.onLoading(total, current, isUploading);
                    Log.i(tag,"正在下载");
                }
            });
        }
    }
好了,以上就是简单实现自动进入安装界面的方法。其中涉及到其他逻辑就不必了解了,这里主要讲的是如何实现自动安装而已,不能跑题哦。
尾语:此文仅是个人的学习笔记,如有不妥敬请留言。



你可能感兴趣的:(源码,android,xml,开源框架,需求)