service使用案例(文件下载)

该博客介绍了如何在Android中使用Service进行文件下载,并在下载完成后通过BroadcastReceiver执行安装。针对Android 7.0的权限限制,文章详细讲解了如何使用FileProvider解决FileUriExposedException错误,包括在AndroidManifest.xml中注册Provider、配置共享目录以及申请权限的步骤。示例代码包括AndroidManifest.xml、DownLoadService.java和MainActivity.java的片段。
摘要由CSDN通过智能技术生成

应用程序下载,并在通知栏提醒下载完成。过程大概分成三步:

  1. 创建一个service
  2. 在service启动的时候创建一个广播接收者
  3. 当BroadcastReceiver接收到下载完成的广播时,开始执行安装

此过程兼容了Android 7.0权限限制安装功能,Android 7.0 因为设置了“私有目录被限制访问”,“StricMode API”等安全机制,因此安装时会产生FileUriExposedException错误,此错误用FileProvider解决。

  1. 在AndroidMenifest.xml文件中注册provider,向外提供数据的组件。其中exported="false"必须设置成false,否则会报安全异常;grantUriPermissions="true"表示授予Uri临时访问权限;authorities组件标识,一般以包名开头。

    <provider
    android:authorities="com.nxyuntui.testproject.fileprovider"
    android:name="android.support.v4.content.FileProvider"
    android:grantUriPermissions="true"
    android:exported="false">
       <!--元数据-->
       <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/file_paths" />
    </provider>
    
  2. 指定共享的目录。在res文件下创建一个xml目录,再在xml目录下创建一个名为file_paths的资源文件。其中,file-path 表示Context.getFilesDir(),external-path表示Environment.getExternalStorageDirectory(),cache-path表示 getCacheDir()。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
      <paths>
        <external-path path="" name="download"/>    //path="" 表示共享根目录以及根目录下所有文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值