美文网首页
解决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