【问题标题】:Unable to get provider androidx.core.content.FileProvider: java.lang.IllegalArgumentException: Missing android.support.FILE_PROVIDER_PATHS meta-data?无法获取提供者 androidx.core.content.FileProvider:java.lang.IllegalArgumentException:缺少 android.support.FILE_PROVIDER_PATHS 元数据?
【发布时间】:2019-12-22 21:24:54
【问题描述】:

我看了很多这样的帖子,但仍然不知道问题是什么。我尝试在 file_paths.xml 中更改路径和名称。

file_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="pirosfogo_images"
path="storage/emulated/0/pictures/"/>
</paths>

AndroidManifest.xml:

<application
    ...
    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.kijevigombooc.pirosfogo.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true"/>
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</application>

java:

void takePhoto(){
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
    {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 110);
    }
    else
    {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (intent.resolveActivity(getPackageManager()) != null)
        {
            File photoFile = createPhotoFile();
            if(photoFile != null){
                pathToFile = photoFile.getAbsolutePath();
                Uri photoURI = FileProvider.getUriForFile(ProfileEdit.this, "adada", photoFile);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(intent, REQUEST_CAMERA);
            }
        }
    }
}
private File createPhotoFile() {
    String name = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File storageDir = getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File image = null;
    try{
        image = File.createTempFile(name, ".jpg", storageDir);
    } catch(Exception e){}
    return image;
}

为什么我会收到错误消息?

【问题讨论】:

  • android.support.FILE_PROVIDER_PATHS 元数据应设置在&lt;provider&gt; 标签内。
  • 不,我已经查看了这个问题及其答案,但是谢谢
  • 正如我在上一条评论中提到的,您收到错误的原因是因为您在错误的父级中指定了 meta-data - 它应该是 &lt;provider&gt; 标记,而不是 &lt;application&gt; 标记。
  • 你能告诉我它的样子吗?自动完成文本不显示我

标签: java android


【解决方案1】:

这是因为您在错误的父级中指定了&lt;meta-data&gt; 标记(&lt;application&gt; 标记)。它应该在&lt;provider&gt; 标记中指定。 (下面两个代码sn-ps显示了区别:)

<application
    ...
    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.kijevigombooc.pirosfogo.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>
</application>

VS

<application
    ...
    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.kijevigombooc.pirosfogo.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true"/>
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</application>

【讨论】:

  • 通过此修复,我仍然收到以下错误:java.lang.RuntimeException: Unable to get provider androidx.core.content.FileProvider: java.lang.IllegalArgumentException: Missing android.support.FILE_PROVIDER_PATHS meta -数据
  • 我以某种方式恢复了更改并认为我有另一个问题,但确实这是问题所在。
  • @KijeviGombooc 你能解决这个问题吗?如果是,请分享。对我来说,即使在提供程序中添加元数据后,我也会遇到这个异常。
  • 说实话很久没接触这个项目了,不记得是怎么解决的了。我的github如下,欢迎查看:github.com/KijeviGombooc/Piros-Fogo
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多