Flutter(三):实现Flutter代码调用Android原生代码(创建WebView Plugin)

本文实现flutter代码调用Android原生Webview(本文比较长)

1.新建一个Flutter项目

2.在项目根目录下右键new>module>flutter plugin

3.自动生成如下图所示项目结构

其中webview_plugin就是我们新建的WebView插件,名字可以自由命名。

展开webview_plugin文件夹的结构如下:

我们目前只关注Android的,所以我们只需要在android文件下写,其他不变,android文件下有个WebviewPlugin.java文件,以下是我修改完的代码:

/**
 * WebviewPlugin
 */
public class WebviewPlugin implements MethodCallHandler {
    private Activity activity;
    private WebView webView;
    private Result result;
    /**
     * Plugin registration.
     */
    public static void registerWith(Registrar registrar) {
        final MethodChannel channel = new MethodChannel(registrar.messenger(), "webview_plugin");
        channel.setMethodCallHandler(new WebviewPlugin(registrar.activity()));
    }

    @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
    public WebviewPlugin(Activity activity) {
        this.activity = activity;
        webView=new WebView(activity);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        webView.getSettings().setLoadsImagesAutomatically(true);// 加载网页中的图片
        webView.getSettings().setUseWideViewPort(true); //设置使用视图的宽端口
        webView.getSettings().setAllowFileAccess(true);// 可以读取文件缓存(manifest生效)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
         webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
    }

    @Override
    public void onMethodCall(MethodCall call, Result result) {
        this.result=result;
        switch (call.method) {
            case "load":
                FrameLayout.LayoutParams params = buildLayoutParams(call);
                LinearLayout linearLayout=new LinearLayout(activity);
                linearLayout.setOrientation(LinearLayout.VERTICAL);
              
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值