共计 2080 个字符,预计需要花费 6 分钟才能阅读完成。
当初挪动端也是次要办公的伎俩之一,因而很多企业都冀望在挪动端,桌面端,服务端,都放弃一致性,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;
}
});
正文完
发表至: javascript
2021-06-10