【问题标题】:Why I am Getting NullPointerException android.content.pm.ProviderInfo after Defining a FileProvider authorities attribute为什么我在定义 FileProvider 权限属性后得到 NullPointerException android.content.pm.ProviderInfo
【发布时间】:2018-04-05 10:39:40
【问题描述】:

我会用谷歌搜索这个,但我找不到我在发什么

我在 Github 上有这个库,它显示图像意图以选择表单库或打开相机:

'com.github.Mariovc:ImagePicker:latestVersion' 1.2.2

我在 AndroidManifest.xml 中添加了提供程序

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

这里是 xml/provider_paths:

<paths>
<external-path path="." name="external_files" />

当我在 Galaxy j.7 Android Api 5.1.1 上运行应用程序时,我收到此错误:

    Failed to ensure directory: /storage/extSdCard/Android/data/co.my_city.development/cache
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err:     at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:584)
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err:     at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:558)
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err:     at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err:     at com.mvc.imagepicker.ImagePicker.getPickImageIntent(ImagePicker.java:219)
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err:     at com.mvc.imagepicker.ImagePicker.startChooser(ImagePicker.java:184)
04-05 13:31:32.171 28647-28647/co.my_city.development W/System.err:     at com.mvc.imagepicker.ImagePicker.pickImage(ImagePicker.java:165)

但是在nexues Emulator Api上我得到了这个错误:

 va.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
04-05 06:35:23.650 3835-3835/co.my_city.development W/System.err:     at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:584)
04-05 06:35:23.650 3835-3835/co.my_city.development W/System.err:     at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:558)
04-05 06:35:23.650 3835-3835/co.my_city.development W/System.err:     at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
04-05 06:35:23.650 3835-3835/co.my_city.development W/System.err:     at com.mvc.imagepicker.ImagePicker.getPickImageIntent(ImagePicker.java:219)
04-05 06:35:23.650 3835-3835/co.my_city.development W/System.err:     at com.mvc.imagepicker.ImagePicker.startChooser(ImagePicker.java:184)

我在这里错过了什么?

【问题讨论】:

  • 您在清单中的正确位置有&lt;provider&gt; 吗?它属于 &lt;application&gt; 标记内,但不在其他任何标记内,例如 &lt;activity&gt;&lt;service&gt;
  • @MikeM。是的,它在 标签中
  • 那么您似乎在 FileProvider.getUriForFile() 调用中传递了错误的权限。

标签: android github android-8.0-oreo android-fileprovider android-8.1-oreo


【解决方案1】:

我也面临同样的问题,在调试后,我在 FileProvide.class 中得到了它,如下点

private final String mAuthority;

SimplePathStrategy(String authority) 
{
  this.mAuthority = authority;
}

它抛出异常,因为 this.mAuthority 没有正确初始化。此阶段的文件已锁定,无法修改。 (对不起,我不得不在 cmets 中指出这个问题,但由于声誉点较少,我在回答部分在这里强调)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2014-01-29
    相关资源
    最近更新 更多