zoukankan      html  css  js  c++  java
  • Fragment里使用 PhoneGap 的 CordovaWebView

    首先说明一下为什么要使用 CordovaWebView 而不直接使用 WebView 呢?由于 Android4.4 版本之后对 WebView 做了很大的改变,具体参考

    这篇文章:理解WebKit和Chromium: Android 4.4 上的Chromium WebView,这样的改变会出现这样的问题,也是我遇到的问题:webview4.4以上版本使用loadurl加载过长js文件失效问题

    网上也有相关的解决方法,但是感觉很麻烦,而且解决不了我的问题,最后想了想,我们在使用 PhoneGap 的时候有一个继承 WebView 的 CordovaWebView 组件

    已经对于这样的问题做了很好的处理,所以为何不直接用咧,所以就有了这篇文章的: Fragment里使用 PhoneGap 的 CordovaWebView

    实现一个类继承 PhoneGap 的接口:CordovaInterface 

    <span style="font-size:14px;">import android.app.Activity;
    import android.content.ContextWrapper;
    import android.content.Intent;
    
    import org.apache.cordova.CordovaInterface;
    import org.apache.cordova.CordovaPlugin;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * Created by long on 2016/5/30.
     */
    public class CordovaContext extends ContextWrapper implements CordovaInterface {
        Activity activity;
        protected final ExecutorService threadPool = Executors.newCachedThreadPool();
    
        public CordovaContext(Activity activity) {
            super(activity.getBaseContext());
            this.activity = activity;
        }
    
        @Override
        public void startActivityForResult(CordovaPlugin cordovaPlugin, Intent intent, int i) {
        }
    
        @Override
        public void setActivityResultCallback(CordovaPlugin cordovaPlugin) {
        }
    
        @Override
        public Activity getActivity() {
            return activity;
        }
    
        @Override
        public Object onMessage(String s, Object o) {
            return null;
        }
    
        @Override
        public ExecutorService getThreadPool() {
            return threadPool;
        }
    }
    
    
    </span>


    <span style="font-size:14px;">import android.app.Fragment;
    import android.os.Build;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.webkit.WebView;
    
    import org.apache.cordova.Config;
    import org.apache.cordova.CordovaWebView;
    
    public class HomeFragment extends Fragment {
        private View view = null;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
                LayoutInflater localInflater = inflater.cloneInContext(new CordovaContext(this.getActivity()));
                view = localInflater.inflate(R.layout.fragment_cordova, container, false);
    
                CordovaWebView webView = (CordovaWebView) view.findViewById(R.id.id_cordovaWebView);
                Config.init(getActivity());
                webView.loadUrl("file:///android_asset/www/index_home.html");
    
            }
    
            return view;
        }
    
    }
    
    
    </span>

    相关文章分享:

    http://www.lai18.com/content/1978961.html

    https://github.com/Adobe-Marketing-Cloud-Apps/app-sample-android-phonegap/wiki/Embed-Webview-in-Android-Fragment

    关注公众号,分享干货,讨论技术


  • 相关阅读:
    JavaScript或jQuery模拟点击超链接和按钮
    web开发中目录路径问题的解决
    jQuery操作复选框的简单使用
    php中常用魔术方法的举例
    Code-Validator:验证经度、验证维度
    Code-Validator:验证身份证号
    Code-Validator:验证IPv6地址
    Code-Validator:验证IPv4地址
    Code-Validator:验证网址(可以匹配IPv4地址但没对IPv4地址进行格式验证;IPv6暂时没做匹配)
    Code-Validator:验证电子邮箱
  • 原文地址:https://www.cnblogs.com/molashaonian/p/9097631.html
Copyright © 2011-2022 走看看