2016-05-25 19 views
3

コードワーカー3.7で正しく動作していたonPageStarted, onPageFinished etcをオーバーライドするカスタムwebviewclientクラスを作成しました。CordovaWebViewClientがCordova 6で動作しない理由

次のコードでは、Webサーバーにwwwディレクトリをホストし、そこからcordovaプラグインを操作しています(バーコードスキャナ、nfc、bluetoothなど)。

public class MainActivity extends CordovaActivity { 
    private WebView webView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     super.init(); 

     loadUrl("https://example.com"); 
    } 

    public class CustomCordovaWebViewClient extends CordovaWebViewClient { 

     public CustomCordovaWebViewClient(CordovaInterface cordova, CordovaWebView view) { 
      super(cordova, view); 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      Log.i("CSP Log", "onPageStarted: " + url); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      Log.i("CSP Log", "onPageFinished: " + url); 
     } 

     @Override 
     public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){ 
      super.doUpdateVisitedHistory(view, url, isReload); 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      super.onReceivedError(view, errorCode, description, failingUrl); 
     } 

    } 

} 

年後、私はコルドバ6にコルドバ3.7からプロジェクトを移行したが、私はシンボルを解決することはできませんCordovaWebViewClient, super.onPageStarted etcのように壊れたコードの上に発見しました。私もCordovaWebViewImplを試して自分自身を混乱させる。

Googleでたくさん検索した後、私はほとんど適用されない2011から14に与えられた解決策を見つけました。私はcordovaドキュメントが役に立ちました。

答えて

5

それはSystemWebViewClient

に置き換えられましたあなたはこのような何かをする必要があります

SystemWebView wv = (SystemWebView)appView.getView(); 
wv.setWebViewClient(new SystemWebViewClient((SystemWebViewEngine)appView.getEngine()){ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     Log.i("CSP Log", "onPageStarted: " + url); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     Log.i("CSP Log", "onPageFinished: " + url); 
    } 

    @Override 
    public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){ 
     super.doUpdateVisitedHistory(view, url, isReload); 
    } 

    @Override 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     super.onReceivedError(view, errorCode, description, failingUrl); 
    } 
}); 
+0

私はあなたができるように、意図を持っている、それはURLが代わりにアプリケーション – mumair

+0

のブラウザ中のコールをリダイレクトopenning理由がわかりませんconfig.xmlのhttp/httpsのタグ?それを削除する – jcesarmobile

+0

申し訳ありません、私は夜中にいました。意図リダイレクトが続い – mumair

1

コルドバ4CordovaWebViewClientを除去:look here

あなたがWebViewClient代わりにCordovaWebViewClientを(cordova-plugin-inappbrowserプラグインがオーバーライドonPageStartedイベントのためにそれを使用する)を使用することができます。横断歩道のような外部webviewsをサポートするために、順序どおり

public class CustomCordovaWebViewClient extends WebViewClient 
1

のApache CordovaのはCordovaWebViewClientを削除しました。あなたは、次のcommit link14 changed filesのリンクをチェックアウトする場合は、CordovaWebViewClientが削除され、AndroidWebViewClientが追加され見ることができました。

だから、私はあなたがおそらく代わりにorg.apache.cordova.engine.SystemWebViewClientを使用して試すことができコルドバ6.0

で同じ古いコードの作業を使用することはできませんね。

Infactでは、同じ質問にはhereと答えられました。だから私はこれが問題の可能な解決策であると信じています。それが役に立てば幸い。

関連する問題