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

来源:互联网 发布:云南省卫生网络直报 编辑:程序博客网 时间:2024/05/16 09:58

下载好的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,"正在下载");                }            });        }    }
 
好了,以上就是简单实现自动进入安装界面的方法。其中涉及到其他逻辑就不必了解了,这里主要讲的是如何实现自动安装而已,不能跑题哦。
尾语:此文仅是个人的学习笔记,如有不妥敬请留言。



阅读全文
0 0
原创粉丝点击