Hybrid App开发问题记录

6 篇文章 0 订阅
2 篇文章 0 订阅

一、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 alert
private class MyWebChromeClient extends WebChromeClient {
	@Override
	public boolean onConsoleMessage(ConsoleMessage cm) {
	Log.d("test", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId());
	    return true;
	}
	@Override
	public 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值