Исключение безопасности FileProvder в библиотеке - PullRequest
1 голос
/ 28 марта 2020

У меня есть библиотека, в которой должен быть файл-провайдер, и чтобы предотвратить конфликт с реализующим FileProvider приложения, я использовал упомянутый подход здесь . Хотя библиотека не создает проблем и библиотека протестирована в примере приложения, она выдает следующее исключение:

Примечание: Несмотря на исключение, я могу поделиться контентом с другие приложения, использующие намерение поделиться. Я пойму, не зная, почему возникает исключение, в то время как файлы все еще передаются без каких-либо cra * sh.

Исключение:

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>

Использование FileProvider:

Uri uri = FilesProvider.getUriForFile(getApplicationContext(), getPackageName() + ".com.library.package.provider.fileprovider", new File(filePath));
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_TEXT, content);
intent.putExtra(Intent.EXTRA_STREAM, uri);
context.startActivity(Intent.createChooser(intent, context.getString(R.string.intent_share_title)));

Должен ли я просто игнорировать cra sh и двигаться дальше или я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...