美文网首页网络
RetroHttp使用记录

RetroHttp使用记录

作者: 奔跑的佩恩 | 来源:发表于2019-12-30 09:08 被阅读0次

一. 安装和文件读写权限

在manifast.xml配置文件中,添加以下权限:

    <!--安装未知来源应用的权限 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <!--联网权限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!--文件读写权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

其中,联网权限和文件读写权限要在 项目中动态申请权限。

二. provider文件权限

在 mainfast 的配置文件中加入FileProvider注册(注意:provider 和 activity 标签同级,都是 application 标签的子类):

<application>
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/retrohttp_files" />
        </provider>
</application>

authorities="${applicationId}"值为你项目的applicationId,一般在app——model的buidle.gradle中或配置文件config.gradle中,参数值位置大如下所示:

    compileSdkVersion 28
    defaultConfig {
        applicationId "com.p.atestdemo"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

位置类似上面的 applicationId 后面跟的值。

按一般流程来说,需要在你项目的 res文件夹下建 xml文件 updat_files.xml(文件名自己定义)。由于RetroHttp库里面已经新建了retrohttp_files.xml文件,所以,如果你项目中要用的话,只需要如上所述在provider中加“meta-data”标签,类似如下:

    <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/retrohttp_files" />
        </provider>

三. 下载安装方法的使用

前面权限都已经弄好后,当涉及到apk文件下载和安装的时候,你可以类似这样:

        String url="http://xxx.xxx.cn:3366/down/baidu.apk";//为示例代码url
        //启动下载
        ProgressDialog progressDialog = DownLoadHelper.getInstance().showDownLoading(mContext);
        DownLoadHelper.getInstance().setFileName("abc.apk")//设置apk文件名
                .setIcon(R.mipmap.ic_launcher)//设置apk图标资源id
                .setAuthorityTag("com.p.atestdemo")//设置要与清单文件的 provider 中配置的authorities值一致
                .downLoadFile(url, MainActivity.this, new DownLoadHelper.DownloadListener() {
                    @Override
                    public void onStart() {

                    }

                    @Override
                    public void update(int progress, boolean done) {
                        progressDialog.setProgress((int) (progress * 1f));
                    }

                    @Override
                    public void onCompleted() {
                        progressDialog.dismiss();
                    }

                    @Override
                    public void onError(String err) {
                        progressDialog.dismiss();

                        LogUtil.i("=========下载失败=====");
                        
                        //下载失败的逻辑
                        //......

                    }
                });

这样,就可以下载新的apk文件进行安装了。不过在调用这个下载方法前,我们最好先判断下手机内存是否足够。

相关文章

  • RetroHttp使用记录

    一. 安装和文件读写权限 在manifast.xml配置文件中,添加以下权限: 其中,联网权限和文件读写权限要在 ...

  • RetroHttp(六) — 下载进度

    前言 在RetroHttp的下载功能使用过程中,出现了下载进度无法实时显示的问题,然后我做了些优化,下面就来讲讲吧...

  • RetroHttp(五) — 并发请求

    前言 RetroHttp作为一个基于Retrofit2.x网络请求的封装库,致力于简洁快速的实现网络通讯,在之前的...

  • RetroHttp(四) — 实现串联请求

    前言 RetroHttp作为一个基于Retrofit2.x网络请求的封装库,致力于简洁快速的实现网络通讯,在之前的...

  • RetroHttp(三) — kotlin版网络请求

    前言 RetroHttp作为一个基于Retrofit2.x网络请求的封装库,致力于简洁快速的实现网络通讯,在之前的...

  • mtrace-内存使用追踪(内存)

    1. 函数格式: mtrace 用于开启内存使用记录,muntrace用于取消内存使用记录。内存使用情况记录到一个...

  • 学习MySQL---ing

    @[toc] Mac MySQL使用教程 本文记录在我的GitHub 记录使用Homebrew安装Mysql全过...

  • 转场动画

    presentation使用记录

  • [tf]tensorboard的使用

    使用tf.summary.scalar记录标量数据,使用tf.summary.histogram直接记录变量var...

  • iOS下FMDB的多线程操作(二)

    上一篇记录不使用FMDatabaseQueue来使用多线程,这一篇记录一下使用FMDatabaseQueue的方式...

网友评论

    本文标题:RetroHttp使用记录

    本文链接:https://www.haomeiwen.com/subject/ydxqoctx.html