Я пробовал много способов, но не смог вызвать функцию JavaScript в виде строки в WebView.loadurl ()
Я пытался использовать собственный HTML-файл, и он работает отлично, но теперь я хочу вызватьJS работает как строка в webView.loadurl (string) для JavaScriptInrteface, но не работает.
У меня нет доступа к html-коду или мне не нужно звонить из веб-файлов, таких как html, html или javascript.
Я также пытался с
Скрыть WebView, пока не будет выполнен JavaScript
Android JS в WebView.loadUrl ()
Но ничего не работает длямне.
Вот мой код.
MainActivity:
webView = (WebView) findViewById(R.id.webView);
webView.loadUrl(AppData.link);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
AppData.link = url;
view.loadUrl(url);
return false;
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
webView.loadUrl("file:///android_assets/error.html");
}
public void onPageFinished(WebView view, String url) {
// do your stuff here
swipe.setRefreshing(false);
webView.loadUrl("javascript: window.Android.showToast("+url+");");
}
});
browserSettings();
private void browserSettings() {
webView.addJavascriptInterface(new JavaScriptInterface(ctx),"Android");
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
//String test = "javascript:(function(){ Android.showToast("+url+");})();";
//Log.e(TAG, test);
//webView.loadUrl(test);// this is also not working
//Here I need to get blob URL and pass it to javascriptInterface
//but this function is not wroking
webView.loadUrl("javascript:"
+ "var FunctionTwo = function () {"
+ " window.Android.showToast("+url+");"
+ "};"
+ "FunctionTwo();");
}
});
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
}
JavaScriptInteface.java
public class JavaScriptInterface {
private Context context;
private NotificationManager nm;
public JavaScriptInterface(Context context) {
this.context = context;
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(context, toast, Toast.LENGTH_SHORT).show();
}
}