2016-10-04 7 views
0

Ich lade eine Seite in Webview in Android. Die Seite hat ein Element (Button) mit dem folgenden Code, NB: - Es ist eine Webseite Dritter und ich habe keine Kontrolle über den Code hier gezeigt: -Wie Javascript Oberfläche in Android Webview injizieren?

<i class="icon close cardClose" role="button" title="Close recently linked screen" tabindex="0"></i> 

Ich mag eine JavaScript-Schnittstelle hinzufügen, wie in die folgenden Verfahren: -

private class myWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      view.addJavascriptInterface(new Object() 
      { 
       @JavascriptInterface 
       public void performClick() throws Exception 
       { 
        Toast.makeText(Activity.this, "Login clicked", Toast.LENGTH_LONG).show(); 
       } 
      }, "login"); 
      return true; 
     } 
    } 


mWebView.setWebViewClient(new myWebViewClient()); 

Aber das Problem ist, dass webview Quellcode sagt: -

* @param object the Java object to inject into this WebView's JavaScript 
    *    context. Null values are ignored. 
    * @param name the name used to expose the object in JavaScript 
    */ 
    public void addJavascriptInterface(Object object, String name) { 
     checkThread(); 
     mProvider.addJavascriptInterface(object, name); 
    } 

die Schaltfläche doesnot scheinen ein Attribut mit dem Namen "name". Bitte werfen Sie einen Einblick in das gleiche, wenn jemand Wissen hat.

+0

Sie müssen übergeben JavascriptInterface Objektnamen, von denen wir auf die Methoden zugreifen können –

+0

@RahulKhurana Wie man diesen Namen bekommen? –

+0

Ich würde keine anonyme innere Klasse verwenden. Alle Beispiele für 'addJavascriptInterface()' Ich kenne eine benannte Klasse. – Robert

Antwort

0

ich recommed Sie es auf diese Weise verwenden

view.addJavascriptInterface(new JavaScriptInterfaceNew(getActivity(), this), "Android_Normal_Test"); 

und hier JavaScriptInterfaceNew Ihre Klassennamen und Android_Normal_Test wird Ihre Aufgabe sein, wenn Sie ein Ereignis von webview, um Ihren Pass müssen activity class

+0

Bitte machen Sie die Antwort klarer und halten Sie sich bitte an den Beispielcode in der Frage. Ich bin kein Experte in Java Script, deshalb. –

+0

Ok. Sie möchten die Methode performClick ausführen? –

+0

Ja, ich möchte performClick-Methode von Button mit dem HTML-Code ausführen, den ich in der Frage gestellt habe. –

Verwandte Themen