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.
Sie müssen übergeben JavascriptInterface Objektnamen, von denen wir auf die Methoden zugreifen können –
@RahulKhurana Wie man diesen Namen bekommen? –
Ich würde keine anonyme innere Klasse verwenden. Alle Beispiele für 'addJavascriptInterface()' Ich kenne eine benannte Klasse. – Robert