为什么我在定义FileProvider权限属性后获取NullPointerException android.content.pm.ProviderInfo

时间:2018-04-05 10:39:41

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

我会搜索这个,我找不到我在想什么

我有这个库形式Github,它提供Image Intent来选择表单库或打开相机:

'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)

但是在关于Emulater 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)

我在这里错过了什么?

1 个答案:

答案 0 :(得分:0)

我面临着同样的情况,调试之后,我在以下几点将其保存在FileProvide.class中

private final String mAuthority;

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

它抛出异常,因为this.mAuthority未正确初始化。此阶段的文件已锁定,无法修改。 (对不起,我不得不在评论中指出这个问题,但由于信誉不佳,我在“答案”部分中强调了这一点。)