库中的FileProvder安全异常

问题描述 投票:0回答:1

我有一个库,需要一个文件提供程序,并且为了防止与实现应用程序的FileProvider发生冲突,我使用了here中提到的方法。尽管该库没有构建问题,并且在示例应用程序中对该库进行了测试,但它抛出以下异常。

注意:尽管有例外,我仍然可以使用共享意图将内容共享给其他应用。我不知道为什么在共享文件而没有崩溃的情况下发生异常。

例外:

E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading com.library.package.reporter.FilesProvider uri content://com.library.package.sample.com.library.package.provider.fileprovider/./reports/2020-03-28%2022%3A42%3A50_report.txt from pid=3158, uid=1000 requires the provider be exported, or grantUriPermission()
    at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:729)
    at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:602)
    at android.content.ContentProvider$Transport.query(ContentProvider.java:231)
    at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:104)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

清单:

<provider
        android:name=".reporter.FilesProvider"
        android:authorities="${applicationId}.com.library.package.provider.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/filepaths" />
    </provider>

我应该忽略崩溃并继续前进,还是我做错了什么?

android android-library android-fileprovider manifest-merging
1个回答
0
投票

您应该使用:

android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"

代替

android:name=".reporter.FilesProvider"
android:authorities="${applicationId}.com.library.package.provider.fileprovider"

FileProvider Doc

© www.soinside.com 2019 - 2024. All rights reserved.