Hybrid App开发问题记录
16lz
2021-01-24
一、web前端
1.调用APP原生方法
①.第一种调用方法
const nativeOS = { isAndroid() { return /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent); }, isIos() { return /(Android)/i.test(navigator.userAgent); }, isMobile() { return this.isIos() || this.isAndroid(); }}; if (nativeOS.isMobile()) { var res = window.hello.getLocationString(); //getLocationString为ios或Android端的方法}
②第二种调用方法
function callApp(name,param){ if(window.webkit){ window.webkit.messageHandlers[name].postMessage(param); }else{ window.AndroidWebView[name](param); }}
二、APP端
1.Android Webview如下错误
Android Webview: “Uncaught TypeError: Cannot read property ‘getItem’ of null”
解决方式:
WebSettings settings = webView.getSettings();settings.setDomStorageEnabled(true);
2.Android Webview启用javascript
解决方式:
WebWiew webView = (WebWiew )findViewById(R.id.webView);WebSettings webSettings=webView.getSettings();webSettings.setJavaScriptEnabled(true);
3.Android Webview运行脚本前,要有document对象,至少得load一个空白页
解决方式:
webView.loadData("","text/html","UTF-8");
4.Android Webview异步执行问题
下面代码无法正常运行
webView.loadData("", text/html", "UTF-8");webView.loadUrl("javascript:alert('hello')");
几种解决方式:
- 从界面按钮调用
- 延时调用
- 在onPageFinished中调用
mWebView.setWebViewClient(new MyWebViewClient());private class MyWebViewClient extends WebViewClient { @Override public void onPageFinished(WebView webView, String url) { webView.loadUrl("javascript:"+script); }}
5.Android Webview额外实现console/alert
解决方式:
mWebView.setWebChromeClient(new MyWebChromeClient()); //optional, for show console and alertprivate class MyWebChromeClient extends WebChromeClient {@Overridepublic boolean onConsoleMessage(ConsoleMessage cm) {Log.d("test", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId()); return true;}@Overridepublic boolean onJsAlert(WebView view, String url, String message, JsResult result) {Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();return true;}}
参考内容:https://zhidao.baidu.com/question/1894975701280081700.html
更多相关文章
- android 关于Only the original thread that created a view hie
- Android应用开发中如何进行单元测试
- rk3288 android 7.1 串口使用
- Android(安卓)Hugo
- Android(安卓)RecyclerView:设置指定位置的两种方法
- android线程相关1
- android View的三个构造方法 简单总结
- Android抓包方法
- okhttp源码学习分析一