隐藏

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

发布:2021/11/3 16:54:03作者:管理员 来源:本站 浏览次数:1757

   前言:


如何实现下载功能在这里就不多说了,我用的是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,"正在下载");

                   }

               });

           }

       }

   

   

   

   

   好了,以上就是简单实现自动进入安装界面的方法。其中涉及到其他逻辑就不必了解了,这里主要讲的是如何实现自动安装而已,不能跑题哦。