ionic angular 与原生进行交互

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
    
    

附送:

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);

你可能感兴趣的:(ionic angular 与原生进行交互)