2015-07-21 3 views
5

में कॉर्डोवा 5.0 के साथ कस्टम वेब व्यू बिल्डिंग मैं कॉर्डोवा के साथ एक कस्टम वेब व्यू बनाना चाहता हूं। ऐसा करने के लिए मैं setWebChromeClient और setWebViewClient विधियों को ओवरराइड करना चाहता हूं। लेकिन इसके लिए मुझे एक SystemWebViewClient होना आवश्यक है जिसके लिए एक SystemWebViewEngine की आवश्यकता है, जिसे मैं इस बिंदु पर प्राप्त नहीं कर सकता। यहाँ मेरा मुख्य गतिविधिएंड्रॉइड

public class MyActivity extends CordovaActivity implements CordovaInterface { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     int threadSize = getResources().getInteger(R.integer.WIPThreadPoolSize); 

     // Initiate Thread pool 
     threadPool = new ThreadPoolExecutor(threadSize, threadSize, 10, TimeUnit.SECONDS, this.priorityQueue); 

     initApplicationInformationManager(); 

     // initialize global variables 
     GlobalApplicationVariables.initValues(this); 

     isActivityReady = false; 

     isActivityReady = false; 

     setContentView(R.layout.main_layout); 
     super.init(); 

    } 


    protected CordovaWebView makeWebView() { 

     SystemWebView webView = (SystemWebView) findViewById(R.id.customWebView); 
     SystemWebViewEngine engine = new SystemWebViewEngine(webView); 


     return new CordovaWebViewImpl(engine); 
    } 

    protected void createViews() { 
     appView.getView().requestFocusFromTouch(); 
    } 
} 

और अपने कस्टम वेबव्यू:

@SuppressLint("SetJavaScriptEnabled") 
public class CustomWebView extends SystemWebView { 

    private DebugServiceClient dbgClient; 

    public CustomWebView(Context context) { 
     super(context); 

     this.configureView(context); 
    } 

    public CustomWebView(Context context, AttributeSet attributeSet) { 
     super(context, attributeSet); 
     this.configureView(context); 
    } 

    /** 
    * Configure the web view. 
    * 
    * @param context 
    *   Context web view is running in. 
    */ 
    private void configureView(Context context) { 
     //Make the WebView visible and hide its scroll bars 
     setVisibility(View.VISIBLE); 
     setVerticalScrollBarEnabled(false); 
     setHorizontalScrollBarEnabled(false); 
     setOverScrollMode(OVER_SCROLL_NEVER); 

     WebSettings webSettings = getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setSupportZoom(false); 
     webSettings.setAppCacheEnabled(false); 
     webSettings.setDomStorageEnabled(true); 


     final MyActivity myActivity = (MyActivity) context; 


     setWebChromeClient(new SystemWebChromeClient(new SystemWebViewEngine(this)) { 

      public void onShowCustomView(View view, CustomViewCallback callback) { 
      /*Custom code*/ 
      } 

      public void onHideCustomView() { 

      /*Custom code*/ 

      } 
     }); 

     setWebViewClient(new SystemWebViewClient(new SystemWebViewEngine(this)) { 

      public boolean shouldOverrideUrlLoading(WebView webview, String url) { 
      /*Custom code*/  
      } 

      public void onReceivedError(WebView view, int errorCod, String description, String failingUrl) { 
       Log.e("Webview Error", errorCod + " - " + description + failingUrl); 
      } 
     }); 
    }   
} 

वास्तव में एक इंजन तक नहीं पहुंच सकता है, ताकि तरीकों ओवरराइट किया जा सकता है, तो मैं बस मक्खी पर एक बनाया है, लेकिन यह कुछ उत्पन्न करता है त्रुटियों। इसके अतिरिक्त मैं कॉर्डोवा प्लगइन प्रबंधक तक नहीं पहुंच पा रहा हूं और इसके परिणामस्वरूप मैं वेबव्यू में प्लगइन जोड़ने में सक्षम नहीं हूं। ऐसा करने का सबसे अच्छा तरीका कौन सा है?

+0

आप क्या त्रुटियों मिल रहे थे साथ overrided SystemWebViewClient हूँ? – JSON

उत्तर

0

मैं MainActivity में इस overrided विधि

@Override 
protected CordovaWebViewEngine makeWebViewEngine() { 
    CordovaWebViewEngine ret = CordovaWebViewImpl.createEngine(this, preferences); 
    ((SystemWebView)ret.getView()).setWebViewClient(new SystemWebViewClient((SystemWebViewEngine)ret){ 
     @Override 
     public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { 
      LOG.d(TAG, "ON RECEIVED SSL ERROR"); 
      super.onReceivedSslError(view, handler, error); 
     } 
    }); 
    return ret; 
}