应用间共享文件 FileProvider

7.0及以上版本,分析文件给其他进程访问的时候,需要使用FileProvider,否则会出现崩溃;

例如:用系统下载器下载apk,然后通过Intent安装。

官网

使用案例

  • 在AndroidManifest创建Provider
      <provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.fanle.fanle.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
  • 创建res/xml/file_path 文件
      <?xml version="1.0" encoding="utf-8"?>
<paths >
<external-cache-path name="apk" path="update/"/>
</paths>
  • 修改安装代码
      public static void installApkExtendApp(Context context, File file){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
Uri fileURI = FileProvider.getUriForFile(context, "com.fanle.fanle.fileprovider", file);
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(fileURI, "application/vnd.android.package-archive");
context.startActivity(intent);
ToastUtils.showShort(context, fileURI.toString());
}else{
installApk(context, file);
}
}

应用间共享文件 FileProvider的更多相关文章

  1. SMB2 Protocol – 简介(应用层协议主要用于在计算机间共享文件、打印机、串口等)

    SMB2 Protocol – 简介 SMB协议简介: 服务器信息块(SMB)协议是一个应用层协议主要用于在计算机间共享文件.打印机.串口等. 在介绍SMB协议的时候,一般提到使用的端口为139,44 ...

  2. android 7.0 应用间文件共享FileProvider

    1.官方教程 Android 7.0 以后安全系数提高,应用间文件共享要使用FileProvider.原来的 file:/// Uri 替换为 content://Uri  https://devel ...

  3. 使用docker搭建nfs实现容器间共享文件

    首先介绍下今天的两个主角:nfs和docker nfs 是什么 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TC ...

  4. 【云计算】使用docker搭建nfs实现容器间共享文件

    首先介绍下今天的两个主角:nfs和docker nfs 是什么 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TC ...

  5. 怎样在Windows与Centos下的Linux间共享文件,如果mnt文件夹不显示,可能是mnt缺少共享支持

    mnt中的hgfs文件夹就是Linux系统中挂载共享文件的默认文件夹.有的人按步骤共享之后mnt中没有出现共享的文件,可能是因为你的mnt缺少共享支持. 此时可以在Terminal中输入:sudo m ...

  6. host与guest间共享文件夹的三种方法(原创)

    一,用samba实现host与guest共享文件 Samba简介:SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算 ...

  7. (原创)Windows和Linux间共享文件

    方法一: Windows创建目录sharedir,修改共享属性,对everyone开放读写权限. Linux下运行命令:# mount -t cifs //192.168.8.55/sharedir ...

  8. 【问题】如何在Linux与Windows间共享文件

    实验环境 Linux LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS L ...

  9. FileProvider记录下

    Mark下FileProvider,阿里巴巴Android开发手册有如下要求:[强制]应用间共享文件时,不要通过放宽文件系统权限的方式去实现,而应使用FileProvider. 知识点记录:1. An ...

随机推荐

  1. 利用反射编写私有 Private 方法的单元测试

    利用反射编写私有 Private 方法的单元测试 最近在添加一个新feature时,鉴于要给自己的代码一是增加代码的强壮性,二是增加代码测试的覆盖率.但是遇到了有些方法是 Private 的,但是在调 ...

  2. 浅谈云计算SPI(SaaS、PaaS、IaaS)

    The other day, I arrived at the SAP LABS CHINA for interview with my pleasure. That gave me a chance ...

  3. ASP.NET MVC 常用路由总结

    1.URL模式 路由系统用一组路由来实现它的功能,这些路由共同组成了应用系统URL架构或方案,这种URL架构是应用程序能够识别并能对之做出响应的一组URL,当处理一个输入 请求时,路由系统的工作是将这 ...

  4. SpringCloud Gateway入门

    本文是介绍一下SpringCloud Gateway简单路由转发使用. SpringCloud Gateway简介 SpringCloud是基于Spring Framework 5,Project R ...

  5. C#中form窗体之间的传递几个方法

  6. LeetCode(283. 移动零)

    问题描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数 ...

  7. MPU和CPU有什么区别?

    MPU(或称MP,微处理器)和CPU(中央处理器)同为处理器,但范畴不同. 计算机(即电脑)分为巨型机,大型机,中型机,小型机和微型计算机5类.这5类计算机的运算核心统称为CPU,而MPU只是微型计算 ...

  8. pythonweb服务器编程(二)

    Web静态服务器-1-显示固定的页面 #coding=utf-8 import socket from multiprocessing import Process def handleClient( ...

  9. vs 基本验证控件使用

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.c ...

  10. HTTP协议2

    一.响应协议 格式: (1)响应首行:HTTP协议版本,不可默认 (2)响应头信息:可以默认 响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示 (3)空行: (4)响应体: 响应内容是 ...