Исключение безопасности FileProvider в библиотекеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Исключение безопасности FileProvider в библиотеке

Сообщение Anonymous »

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

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

Исключение:

Код: Выделить всё

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)
Манифест:

Код: Выделить всё

        android:name=".reporter.FilesProvider"
android:authorities="${applicationId}.com.library.package.provider.fileprovider"
android:exported="false"
android:grantUriPermissions="true">


Использование 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)));
Должен ли я просто игнорировать сбой и двигаться дальше, или я что-то делаю неправильно?

Подробнее здесь: https://stackoverflow.com/questions/609 ... in-library
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»