当初挪动端也是次要办公的伎俩之一,因而很多企业都冀望在挪动端,桌面端,服务端,都放弃一致性,ActiveReportsJS是一款前端的Web 开发工具,助力开发前后端拆散利用。所以如果要在手机端开发混合利用,也能够将ActiveReportsJS 集成进去。
本篇教程,次要来分享如何在Android app 开发中调用蕴含 ActiveReportJS 的html页面。
实现思路:
- 创立 Android App 应用WebView控件来调用HTML 代码, WebView是一个基于webkit引擎、展示web页面的控件。
- 在Android我的项目下创立asset文件将html页面及须要的js文件拷贝到当前目录。
- 设置 Android权限,并设置可执行js代码
具体实现:
- 下载Androird Studio ,新建空白的Android利用
- 增加 MainActivity 并增加 WebView 控件
<WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" />
- 增加 Asset文件夹,并将js及html页面放到该门路下,留神asset是归属于Main还是Debug还是release的,影响前面门路写法
- 批改AndroidManifest.xml 文件,减少权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
- MainActivity 调用WebView.loadURL(),并调用JavaScript对应的办法
留神门路写法:
mWebview.loadUrl("file:///android_asset/activejs/index.html"); mWebview = (WebView) findViewById(R.id.webView1); mWebSettings = mWebview.getSettings(); mWebSettings.setJavaScriptEnabled(true); mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true); mWebSettings.setAllowContentAccess(true); mWebSettings.setAppCacheEnabled(true); mWebSettings.setDomStorageEnabled(true); mWebSettings.setUseWideViewPort(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mWebSettings.setAllowFileAccessFromFileURLs(true); mWebSettings.setAllowUniversalAccessFromFileURLs(true); } mWebview.loadUrl("file:///android_asset/activejs/index.html"); mWebview.post(new Runnable() { @Override public void run() { // 留神调用的JS办法名要对应上 // 调用javascript的callJS()办法 mWebview.evaluateJavascript("javascript:load()", new ValueCallback<String>(){ @Override public void onReceiveValue(String value) { } }); } }); mWebview.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this); b.setTitle("Alert"); b.setMessage(message); b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); b.setCancelable(false); b.create().show(); return true; } });