Flutter Не удалось найти метаданные для провайдера с полномочиями - PullRequest
1 голос
/ 05 ноября 2019

У меня есть приложение, которое использует flutter_webview_plugin 0.3.8. Я открываю веб-страницу в веб-просмотре и показываю ее содержимое. На странице есть кнопка, и когда вы нажимаете на нее, она должна открыть проводник, как это делается в обычном веб-браузере, например, в Chrome. Кнопка отлично работает в Chrome и открывает нижний виджет для выбора действия (камера, файлы,...). Но в моем веб-просмотре он вылетает с ошибкой Couldn't find meta-data for provider with authority com.example.booshehr.fileprovider. Полная ошибка:

W/System.err(15213): java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.example.booshehr.fileprovider
W/System.err(15213):    at androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:606)
W/System.err(15213):    at androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:579)
W/System.err(15213):    at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:417)
W/System.err(15213):    at com.flutter_webview_plugin.WebviewManager.getOutputFilename(WebviewManager.java:272)
W/System.err(15213):    at com.flutter_webview_plugin.WebviewManager.access$800(WebviewManager.java:42)
W/System.err(15213):    at com.flutter_webview_plugin.WebviewManager$3.onShowFileChooser(WebviewManager.java:211)
W/System.err(15213):    at In.a(PG:145)
W/System.err(15213):    at uE0.runFileChooser(PG:2)
W/System.err(15213):    at android.os.MessageQueue.nativePollOnce(Native Method)
W/System.err(15213):    at android.os.MessageQueue.next(MessageQueue.java:325)
W/System.err(15213):    at android.os.Looper.loop(Looper.java:142)
W/System.err(15213):    at android.app.ActivityThread.main(ActivityThread.java:6710)
W/System.err(15213):    at java.lang.reflect.Method.invoke(Native Method)
W/System.err(15213):    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
W/System.err(15213):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
F/chromium(15213): [FATAL:jni_android.cc(249)] Please include Java exception stack in crash report
F/libc    (15213): Fatal signal 5 (SIGTRAP), code 1 in tid 15213 (xample.booshehr)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'lge/elsa_global_com/elsa:8.0.0/OPR1.170623.032/18325232422a1:user/release-keys'
Revision: '12'
ABI: 'arm64'
pid: 15213, tid: 15213, name: xample.booshehr  >>> com.example.booshehr <<<
signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x714216eb04
    x0   0000000000000000  x1   0000000000000081  x2   000000007fffffff  x3   0000000000000000
    x4   0000000000000000  x5   0000000000000000  x6   0000000000000000  x7   7f7f7f7f7fffff7f
    x8   0000000000000000  x9   0000000000000000  x10  0000000000000001  x11  0000000000000000
    x12  0000007134d6ff00  x13  0000000000000000  x14  0000000000000000  x15  000000716228c000
    x16  000000715dfd2208  x17  000000715df25c50  x18  000000006fba3d30  x19  0000007fd17f5c70
    x20  0000007fd17f5c78  x21  0000007fd17f5c80  x22  000000000000004f  x23  000000715dfd4808
    x24  0000007143e3f000  x25  0000007fd17f5e70  x26  0000000000000001  x27  0000007162612a48
    x28  0000007162612a48  x29  0000007fd17f5c60  x30  000000714216e9c4
    sp   0000007fd17f57b0  pc   000000714216eb04  pstate 0000000060000000
backtrace:
    #00 pc 0000000001e9fb04  /data/app/com.android.chrome-HU8bsIOJpUMqks882ELhSA==/base.apk (offset 0xc19000)
    #01 pc 0000000001e9f9c0  /data/app/com.android.chrome-HU8bsIOJpUMqks882ELhSA==/base.apk (offset 0xc19000)

Я пытался добавить provider в androidmanifest, все та же ошибка:

<provider
                android:name="androidx.core.content.FileProvider"
                android:authorities="${applicationId}.fileProvider"
                android:exported="false"
                android:grantUriPermissions="true"
                tools:replace="android:authorities">
            <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/filepaths"
                    tools:replace="android:resource" /> 
</provider>

my @xml/filepaths is:

<?xml version="1.0" encoding="utf-8"?> 
<paths> 
<files-path name="myapp" path="images/"/>
</paths>

Затем я попытался изменить android:authorities="${applicationId}.fileProvider" на android:authorities="${applicationId}.myOwnFileProvider", все та же ошибка.

Пожалуйста, помогите мне в этом.

1 Ответ

1 голос
/ 06 ноября 2019

Некоторые пакеты могут конфликтовать с андроидами FileProvider. Вы должны заглянуть в список ваших пакетов в вашем pubspec.yaml. В основном пакеты, которые читают или пишут файлы, будут конфликтовать с этим. как flutter_downloader и ... Мое предложение - создать новый проект и добавить к нему flutter_webview_plugin 0.3.8. Затем добавляйте другие пакеты один за другим, перезапуская приложение при каждом добавлении пакета. Один из них может конфликтовать. Затем вы должны либо удалить конфликтующий пакет и использовать что-то еще, либо прочитать его документы на его веб-сайте или что-то еще. Чтобы узнать, можете ли вы найти решение для этого.

...