Flutter如何解决找不到有权限的提供者的元数据以及与其他FileProvider插件冲突?

xtfmy6hx  于 2022-12-24  发布在  Flutter
关注(0)|答案(1)|浏览(289)

实际上,我正在使用open_fileflutter_webview_plugin packages在同一个项目。而运行应用程序我得到错误,如:-
java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.example.fileprovider
然后我发现了一个文档,可以添加提供程序来解决这个问题,所以我添加了Androidmanifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" 
package="com.example">
...
<application>
...
       <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/provider_paths"
                tools:replace="android:resource" />
        </provider> 

</application>

添加这个提供程序后,我也得到了相同的错误。在两个包中,他们都使用fileProvider。因此,它得到了冲突。

因此,请帮助我配置两个软件包fileProvider。

dependencies:
  open_file: ^3.0.1
  flutter_webview_plugin: ^0.3.11
  • 先谢了 *
vxf3dgd4

vxf3dgd41#

是的,经过一整天的冲浪,我已经重新喜欢这个问题,使用自定义文件提供程序,以避免与其他插件的冲突,如open_file
flutter_webview_plugin中,请按照以下步骤解决此问题。
步骤:1
android/src/main/AndroidManifest.xml
除去

android:name="androidx.core.content.FileProvider"

android:name="com.flutter_webview_plugin.FlutterWebviewPluginFileProvider"

步骤:2
单位:android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPluginFileProvider.java
创建新类FlutterWebviewPluginFileProvider.java

package com.flutter_webview_plugin;

import androidx.core.content.FileProvider;

public class FlutterWebviewPluginFileProvider extends FileProvider {

}

步骤:3
android/src/main/java/com/flutter_webview_plugin/WebviewManager.java
删除导入

import androidx.core.content.FileProvider;

查找并删除此行

return FileProvider.getUriForFile(context, packageName + ".fileprovider", capturedFile);

添加此

return FlutterWebviewPluginFileProvider.getUriForFile(context, packageName + ".fileprovider", capturedFile);

Refered by :https://github.com/fluttercommunity/flutter_webview_plugin/commit/aeda1e80effd59afdb526b11608cb232a83a6bab
谢啦,谢啦

相关问题