很长一段时间以来,我一直在为自己的业务开发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可以吗?
答案 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。