简单记录

android7.0开始出现FileProvider。从一个小白角度看需要注意这几点:

  • Manifest.xml中添加provider节点
  • 添加xml文件
  • 模块的build.gradle中添加com.android.support包的支持
  • 确保provider节点中的authorities的值和content uri的基础域名一致

具体细节

以SNPE1.25的android程序为例。

最新的Android Studio似乎不能用 android sdk 26,也就意味着必须用FileProvider了。需要在Manifest.xml中的application节点内,添加一段:

        <provider
android:name="android.support.v4.content.FileProvider"
android:authorities="snpe"
android:enabled="true"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>

其中,@xml/provider_paths是需要添加的xml文件,需要在src/main/res下的xml目录(如果没有则新建)新建provider_paths.xml文件,内容:

<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_files"
path="./" />
</paths>

app模块的build.gradle中,最后一段,确保包含如下:


dependencies {
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:exifinterface:27.1.1'
implementation 'com.android.support:support-v4:27.1.1' implementation(name: 'snpe-release', ext:'aar')
testImplementation 'junit:junit:4.12'
}

从snpe的java代码,确保provider节点中的authorities的值和content uri的基础域名一致。生成的uri将以content://com.example.myapp.fileprovider作为开头。

这里我从Model.java看到:public static final Uri MODELS_URI = Uri.parse("content://snpe/models");,因此Manifest.xml中设定 android:authorities="snpe"

参考

Android爬坑之旅之FileProvider(Failed to find configured root that contains)

为安卓项目添加FileProvider的更多相关文章

  1. 阿里云移动推送 安卓项目添加SDK步骤

    Gradle的Emas服务插件会加载您下载的 aliyun-emas-services.json 文件.请修改工程的build.gradle使用该插件.配置步骤如下: 1. 修改项目级目录下build ...

  2. [COCOS2DX]交叉编译实践+速度优化(vs2012修改win32代码+修改makefile+编译安卓项目包+部署安卓项目包到Eclipse+运行apk)

    通过前面的部署过程可以知道cocos2dx的开发过程如下: 1.VS2012完成修改 2.因为指定了CPP文件位置,ndk可以通过jni方式完成C++文件的编译,运行以下命令完成proj.androi ...

  3. [COCOS2DX]COCOS命令新建项目+编译安卓项目并成功运行

    全程搭建过程参考网址: http://blog.csdn.net/lengxue789/article/details/38116475 http://blog.csdn.net/cbbbc/arti ...

  4. 如何使用Sencha touch 构建基于Cordova的安卓项目

     项目构建篇 1.生成sencha touch 项目 新建目录,在命令行进入该目录,sencha -sdk sdk-path generate app appName appPath 2.命令行中进入 ...

  5. 安卓项目R,java文件不能自动更新,clean之后,R.java消失 (转自 Cynosure鱼)

      今天整了个安卓项目,新增加了个跳转页面,添加完背景图,发现有个R.id找不到了,于是clean了一下,这下出问题了,发现各处的R.id都找不到,报错.结果一看是R.java没了然后各种百度结果:有 ...

  6. 第二步 使用Cordova 3.0(及以上版本) 创建安卓项目(2014-6-25)

    参考资料: http://www.cnblogs.com/numtech/p/3233469.html http://blog.sina.com.cn/s/blog_9e245c690101jurr. ...

  7. Eclipse安卓项目导入android.support.design报错的解决办法

    导入android.support.design出错:1.项目除了需要依赖appcompat_v7包外还要design包2.design包就是在安卓sdk下Extras中的android.suppor ...

  8. eclipse新建安卓项目helloworld

    第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclipse . 第四步:下载安装Android SDK (下载Android SDK Manager工具, ...

  9. 使用myeclipse为java web项目添加SSH框架

    添加SSH框架时,要严格按照先Struts,再Spring,最后Hibernate.添加方法见下方: 第一步:添加Struts框架 请按照图示一步步认真执行,配置好struts才可以进行下一步 第二步 ...

随机推荐

  1. 解决ImportError: No module named utils

    转载:https://blog.csdn.net/weixin_43979572/article/details/86159265 在Python中遇到了导包错误,其实包已经有了.原因是我再B文件的a ...

  2. powershell 开windows 端口

    @echo off @echo 请以管理员身份运行 set /p portRemark=请输入端口备注: set /p port=请输入端口号: powershell -command "N ...

  3. 在 Windows 中配置Maven

    访问http://maven.apache.org/ 点击左侧的导航栏,Download 跳转到下载maven的页面,往下滚动,看到 Files 处,选择apache-maven-3.3.9-bin- ...

  4. Ubuntu16.04安装Consul

    1.下载安装包 https://www.consul.io/downloads.html wget https://releases.hashicorp.com/consul/1.5.3/consul ...

  5. 工控随笔_24_西门子TIA 博图硬件目录的更新

    西门子博图软件,不但体积庞大,功能也很复杂,与经典的Step7相比,如果不是经常使用,一般都会有一种很难使用的感觉. 而且相比原来的Step7操作有点不太一样.这里简单的说一下硬件目录的更新. 有两种 ...

  6. 【ARM-Linux开发】Linux模块机制浅析

    Linux模块机制浅析   Linux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析. 模块的Hello World! ...

  7. 超详尽-QThread的正确使用姿势-以及信号槽的跨线程使用

    贴上两篇博文 一.http://www.cnblogs.com/findumars/p/5031239.html 循序渐进介绍了,怎样正确的让槽函数工作在子线程中. 同时介绍了信号槽的绑定与线程的关系 ...

  8. WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍

    不知道大家对无线同屏技术有多少了解,当这种技术普及的时候,我想我们的工作与生活又会方便很多吧!下面是目前三种主流同屏技术的介绍: 目前这种将终端信号经由WiFi传输到电视.电视盒的技术有三种:DLNA ...

  9. zookeeper实现的分布式锁

    在分布式系统中,多个jvm对共享资源进行操作时候,要加上锁,这就是分布式锁 利用zookeeper的临时节点的特性,可以实现分布式锁 public class ZookeeperDistrbuteLo ...

  10. Go 关键字Select

    select select 是Go语言中常用的一个关键字,Linux再也早也引入了这个函数,用来实现非阻塞的一种方式,一个select语句用来选择哪个case中的发送或接收操作可以被立即执行.它类似于 ...