ionic2 与原生进行交互
- 从ionic 向原生传递数据(通过拦截url)
if (this.disposalProofData) { // alert(this.disposalProofData) let dataStr = localStorage.getItem('disposalProofData'); var iFrame; iFrame = document.createElement("iframe"); iFrame.setAttribute("src", 'depreciationeditaccount:&' + dataStr); document.body.appendChild(iFrame); // 发起请求后这个 iFrame 就没用了,所以把它从 dom 上移除掉 iFrame.parentNode.removeChild(iFrame); iFrame = null; return; }
原生拦截数据
mWebview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.split("&")[0].contains("depreciationeditaccount")) { // 新增资产凭证回显 mTag = 1; goAccountVoucher(url, 1); } return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); String orgId = getIntent().getStringExtra("orgId"); // 从原生往 h5缓存里面存东西 mWebview.loadUrl("javascript:getUserInfo('" + token + "','" + orgId + "');"); dismissProgressDialog(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); showProgressDialog(getResources().getString(R.string.loading)); } }
ionic接收参数并保存
(在src下面的index 里面,代码入口index)
//接收数据,写入缓存
function getUserInfo(userToken, orgId) {
writeLocalData('userToken', userToken);
writeLocalData('orgId', orgId);
}
原生往h5 传递数据
mWebview.loadUrl("javascript:getNewAssistProofData('" + jsonStr + "');") index.html <script > function getNewAssistProofData(newAssistProofData) { if (newAssistProofData) { // localStorage.setItem('newAssistProofData', newAssistProofData); writeLocalData('newAssistProofData', newAssistProofData); } } function writeLocalData(key, value) { localStorage.setItem(key, value); var setItemEvent = new Event("setItemEvent"); setItemEvent.value = value; setItemEvent.key = key; // 手动触发setItemEvent window.dispatchEvent(setItemEvent); } </script>
附送:
webview初始化:
mWebview.getSettings().setJavaScriptEnabled(true);
// 设置可以支持缩放
mWebview.getSettings().setSupportZoom(true);
// 设置出现缩放工具
mWebview.getSettings().setBuiltInZoomControls(true);
// 扩大比例的缩放
mWebview.getSettings().setUseWideViewPort(true);
// 自适应屏幕
mWebview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
mWebview.getSettings().setLoadWithOverviewMode(true);
mWebview.addJavascriptInterface(new WebInterface(), "aa");
// WebView加载web资源
mWebview.loadUrl(accUrl);
// js 支持写入缓存
mWebview.getSettings().setDomStorageEnabled(true);
mWebview.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
mWebview.getSettings().setAppCachePath(appCachePath);
mWebview.getSettings().setAllowFileAccess(true);
mWebview.getSettings().setAppCacheEnabled(true);