美文网首页网络
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使用记录

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