Функция JavaScript как строка в Android Webview.loadurl (some_javascript_func) не работает - PullRequest
0 голосов
/ 04 октября 2018

Я пробовал много способов, но не смог вызвать функцию 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...