Android 文件提供程序非法参数异常
Posted
技术标签:
【中文标题】Android 文件提供程序非法参数异常【英文标题】:Android File Provider Illegal Argument Exception 【发布时间】:2016-12-23 00:33:38 【问题描述】:我正在使用文件提供程序将照片保存到给定的目的地。 我明白了:
java.lang.IllegalArgumentException:缺少 android.support.FILE_PROVIDER_PATHS 元数据 在尝试打开活动以从相机捕获图像时。
我的 manifest.xml 文件:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
我的 paths.xml 文件:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="content" path="Android/data/com.my_package_name/files/" />
</paths>
和 Java 代码:
File externalFilesDirectory = this.getExternalFilesDir(null);
File imageFile = File.createTempFile(
imageFileName,
".jpg",
externalFilesDirectory
);
Uri photoURI = FileProvider.getUriForFile(this, "com.example", imageFile);
最后一行给出了例外。 我在这里想念什么?我已经按照官方 Android 开发网站 (https://developer.android.com/training/camera/photobasics.html) 的教程进行操作
【问题讨论】:
可以添加教程链接吗com.example
应该是 "com.example"
。这样能解决吗?
不,只是复制出错
【参考方案1】:
我找到了解决方案。问题是我的授权名称没有以“.fileprovider”结尾。固定。
【讨论】:
您能否提供任何文档的链接以要求 FileProvider 权限名称必须以“.fileprovider”结尾? developer.android.com/reference/android/support/v4/content/… 这可能是 android 中的一个错误,他们后来修复了,因为我使用的是没有.fileprovider
扩展名的授权。它工作正常。
有时订购很重要。我在我的授权名称中使用了 .provider 并且它被接受,只是如果我有超过 1 个提供者,那么应该首先声明文件提供者。【参考方案2】:
即使您对 appId 正确设置了权限并且设置了 FileProvider,您最好还是删除缓存,即删除 .gradle 和 .idea 文件夹,或者可能使缓存无效并重新启动,这样您就可以重新下载 gradle再次依赖,然后它对我有用:) 希望这可能对某人有所帮助
【讨论】:
级长,谢谢!!像魅力一样工作:)以上是关于Android 文件提供程序非法参数异常的主要内容,如果未能解决你的问题,请参考以下文章
获取 mediaMetadataRetriever.setDataSource 抛出非法参数异常