美文网首页
解决Flutter项目中Android WebView不支持in

解决Flutter项目中Android WebView不支持in

作者: Jagtu | 来源:发表于2022-10-26 13:46 被阅读0次

    解决Flutter项目中Android WebView不支持input标签的问题

    将 webview_flutter库 修改为 flutter_webview_pro库
    修改 pubspec.yaml 文件:

    # webview_flutter: ^3.0.4
    
    flutter_webview_pro: ^3.0.1+4
    

    修改 import

    // import 'package:webview_flutter/webview_flutter.dart';
    
    import 'package:flutter_webview_pro/webview_flutter.dart';
    

    在 android/app/src/main/AndroidManifest.xml 中增加相机权限和 FileProvider

    <manifest>
    
        <uses-permission android:name="android.permission.CAMERA" />
    
        <application>
    
            <provider
    
                android:name="androidx.core.content.FileProvider"
    
                android:authorities="${applicationId}.fileprovider"
    
                android:exported="false"
    
                tools:replace="android:authorities"
    
                android:grantUriPermissions="true">
    
                <meta-data
    
                    android:name="android.support.FILE_PROVIDER_PATHS"
    
                    android:resource="@xml/file_paths_public">
    
                </meta-data>
    
            </provider>
    
        </application>
    
    </manifest>
    

    在 android/app/src/main/res目录下新增 xml目录,并新增 file_paths_public.xml 文件,文件内容如下

    
    <?xml version="1.0" encoding="utf-8"?>
    
    <paths>
    
        <paths>
    
            <root-path
    
                name="all_external_path"
    
                path="" />
    
            <files-path
    
                name="files"
    
                path="" />
    
            <cache-path
    
                name="cache"
    
                path="" />
    
            <external-path
    
                name="external_storage_root"
    
                path="." />
    
            <external-files-path
    
                name="external_file_path"
    
                path="" />
    
            <external-cache-path
    
                name="external_cache_path"
    
                path="" />
    
        </paths>
    
    </paths>
    

    说明:

    • 该库 fork自官方的 webview_flutter库,在其基础上新增了对 input标签的支持,代码可能会落后于官方版本,但功能上应该是能满足项目需求的,可以在集成后提交测试验证。
    • 在修改 pubspec.yaml 文件时,可能需要运行 flutter pub get 命令来更新依赖。
    • 对于 Android 10 及以上的设备,需要使用 android:requestLegacyExternalStorage="true" 来支持访问外部存储。
    • 对于 file_paths_public.xml 文件中的 <root-path> 标签,path 属性应该填写实际的路径,例如 / 表示根目录,而不是留空。
    • 可以在 AndroidManifest.xml 文件中添加对网络权限的声明,例如 <uses-permission android:name="android.permission.INTERNET" />。
    • 可以在 Flutter Webview Pro 中使用 WebViewPro 组件来替代 WebView 组件,以支持更多的功能和属性。
    • 需要注意 AndroidX 库和 support 库的冲突问题,可以通过修改 app/build.gradle 文件来解决。例如,将 implementation 'androidx.appcompat:appcompat:1.3.1' 替换为 implementation 'com.android.support:appcompat-v7:28.0.0'。

    相关文章

      网友评论

          本文标题:解决Flutter项目中Android WebView不支持in

          本文链接:https://www.haomeiwen.com/subject/bwjttdtx.html