Cordova 4.0+ CordovaWebView问题

来源:互联网 发布:美国留学知乎 编辑:程序博客网 时间:2024/05/17 02:30

在新接手Cordova项目的时候,为这个问题所困扰,在各种大神聚集的群里问,然而并没有人鸟。自己动手吧,在stack overflow上找到了这篇,解决了问题,希望对其他人有所帮助。


I had the same problem and I have resolved it as show below. In the first example, I embed a CordovaWebView inside an activity. Be careful with cordova 4.0 we can't include a CordovaWebView inside our layouts, so in previous cordova versions CordovaWebView extends WebView but since Cordova 4 this is an interface, so we have to include a org.apache.cordova.engine.SystemWebView. If you see the code you can see that you have to override the methods makeWebView() and createViews() that are called through super.init().

Example 1: Cordova inside an Activity

MainActivity.java

public class MainActivity extends CordovaActivity{        @Override        public void onCreate(Bundle savedInstanceState)        {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);                   super.init();            // Load your application            launchUrl = "file:///android_asset/www/index.html"            loadUrl(launchUrl);        }        @Override        protected CordovaWebView makeWebView() {            SystemWebView webView =SystemWebView)findViewById(R.id.cordovaWebView);            return new CordovaWebViewImpl(new SystemWebViewEngine(webView));        }        @Override        protected void createViews() {                     appView.getView().requestFocusFromTouch();        }    }

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical" android:layout_width="match_parent"        android:layout_height="match_parent">        <org.apache.cordova.engine.SystemWebView            android:id="@+id/cordovaWebView"            android:layout_width="match_parent"            android:layout_height="match_parent"            />    </LinearLayout>
原创粉丝点击