ionic angular 與原生進行互動
阿新 • • 發佈:2019-01-28
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);