使用具有API级别18的Android WebView评估Javascript

时间:2019-05-09 14:44:22

标签: javascript android webview

很长一段时间以来,我一直在为自己的业务开发Android应用程序,并且运行良好,使用Webview并在本机功能之间来回调用。如果相关,这是我的应用程序的Java入口点:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_main);

    myWebView = (WebView) findViewById(R.id.webview);
    final Context that = this;
    myWebView.addJavascriptInterface(new WebAppInterface(this, this), "Android");

    myWebView.setWebViewClient(new WebViewClient(){
        public void onPageFinished(WebView view, String url) {
            myWebView.evaluateJavascript("pageFinished()", null);
        }
    });

    pm = this.getPackageManager();

    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAllowUniversalAccessFromFileURLs(true);
    webSettings.setDomStorageEnabled(true);
    WebView.setWebContentsDebuggingEnabled(true);

    Window window = getWindow();
    //window.setStatusBarColor(Color.parseColor("#3596d4"));

    myWebView.loadUrl("file:///android_asset/index.html");

    IntentFilter filter = new IntentFilter();
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    filter.addAction(getResources().getString(R.string.activity_intent_filter_action));
    registerReceiver(myBroadcastReceiver, filter);

    mDetector = new GestureDetectorCompat(that, this);
    myWebView.setOnTouchListener(touchListener);
}

现在,当我在gradle文件中将最低版本设置为18时,Android Studio会将某些行标记为“ API 18不支持”,最值得注意的是我的myWebView.evaluateJavascript调用,还有一些其他内容,例如{ {1}}。

如何使用API​​ 18 WebView.setWebContentsDebuggingEnabled

在某些地方,当我打电话给evaluateJavascript时,我希望得到答复,例如:

evaluateJavascript

使用API​​ 18可以吗?

1 个答案:

答案 0 :(得分:0)

  

如何在API 18中评估Javascript?

使用loadUrl("javascript:..."), where the ...`是您的JavaScript代码。

  

使用API​​ 18可以吗?

不,对不起。最接近的事情是让您的JavaScript代码在通过WebAppInterface注入的addJavascriptInterface()上调用某些内容。

请注意,目前only ~4% of Android devices using the Play Store are running API Level 18 or older