Skip to content

Commit

Permalink
Merge pull request #16 from kadbbz/dev-1.15.0
Browse files Browse the repository at this point in the history
Dev 1.15.0
  • Loading branch information
kadbbz authored Feb 20, 2024
2 parents cb2524c + 27adbb9 commit fb1ad97
Show file tree
Hide file tree
Showing 24 changed files with 958 additions and 54 deletions.
5 changes: 2 additions & 3 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,23 @@ HAC是[活字格低代码开发平台](https://www.grapecity.com.cn/solutions/hu
* 提供支持现场拍摄的照片上传能力,适配活字格“图片上传单元格”
* 提供支持预览的视频上传能力,适配活字格“附件单元格”
* 提供文件上传能力,适配活字格“附件单元格”
* 提供使用摄像头扫描二维码的能力,适配
* 提供使用摄像头扫描二维码的能力,适配活字格官方插件
* 提供拍摄照片和视频的能力
* 提供震动和响铃的能力
* 提供给照片加水印的能力
* 提供读取本地文件的能力
* 提供调用PDA扫码(广播模式)的能力,支持单次扫描和持续扫描两种模式
* 提供通过GPS等精确定位方式获取当前位置的能力
* 提供调用蓝牙打印机(DothanTech方案)的能力
* 提供读取NFC标签的能力
* 提供读写蓝牙BLE设备的能力
* 提供下载和预览PDF文件的能力
* 提供获取设备唯一标识(SSAID)的能力
* 支持离线模式(锁定返回键等页面导航操作)
* 适配活字格[“PDA交互命令”(插件)](https://marketplace.grapecity.com.cn/ApplicationDetails?productID=SP2209070004&productDetailID=D2209070005)[“手机扫码命令”(插件)](https://marketplace.grapecity.com.cn/ApplicationDetails?productID=SP2104270020&productDetailID=D2206270041&tabName=Tabs_detail)

## 可供Web应用调用的JavaScript接口清单
/app/src/main/java/com/huozige/lab/container/webview/proxy
/app/src/main/java/com/huozige/lab/container/proxy

## 兼容性
* Android >= 8.0
Expand Down
6 changes: 4 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ android {
//noinspection ExpiredTargetSdkVersion
targetSdk 29 // 超过29后,文件权限要大改
versionCode 4
versionName '1.14.3-release'
versionName '1.15.0-release'

manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
Expand Down Expand Up @@ -42,7 +42,7 @@ apply plugin: 'com.google.gms.google-services'
apply plugin: "realm-android"

dependencies {
implementation 'com.google.firebase:firebase-analytics:21.5.0'
implementation 'com.google.firebase:firebase-analytics:21.5.1'
implementation 'com.github.getActivity:XXPermissions:18.2'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.11.0'
Expand All @@ -59,4 +59,6 @@ dependencies {
implementation 'cn.jiguang.sdk:jpush:5.2.0' // 极光推送
implementation 'com.github.Jasonchenlijian:FastBle:2.4.0' // BLE设备
implementation 'com.elvishew:xlog:1.11.0' // 日志文件记录
implementation 'com.otaliastudios:cameraview:2.7.2' // 拍照与图像预处理
implementation 'com.huangyz0918:androidwm-light:0.1.2' // 图片水印
}
2 changes: 1 addition & 1 deletion app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 4,
"versionName": "1.14.3-release",
"versionName": "1.15.0-release",
"outputFile": "app-release.apk"
}
],
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@
android:required="false" />

<uses-permission android:name="com.huozige.lab.container.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <!-- 敏感权限 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 蓝牙相关 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
Expand Down Expand Up @@ -62,6 +65,9 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="UnusedAttribute">
<activity
android:name=".proxy.support.capture.CameraViewActivity"
android:exported="false" />
<activity
android:name=".proxy.support.scanner.BleProxy_ReadingActivity"
android:exported="false" />
Expand Down
55 changes: 43 additions & 12 deletions app/src/main/java/com/huozige/lab/container/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import androidx.annotation.NonNull;

Expand Down Expand Up @@ -182,9 +183,14 @@ public boolean onKeyDown(int keyCode, KeyEvent event) {
// 仅处理后退键
if ((keyCode == KeyEvent.KEYCODE_BACK)) {

// 避免误操作,不允许通过后退键退出应用
if (_webView.canGoBack()) {
_webView.goBack();
if (_webInterop.isOfflineMode()) {
// 离线模式不允许执行后退操作
Toast.makeText(this, "应用处于离线模式,无法执行页面导航。", Toast.LENGTH_LONG).show();
} else {
// 浏览器到最后一页时,不允许通过后退键退出应用
if (_webView.canGoBack()) {
_webView.goBack();
}
}

return true;
Expand Down Expand Up @@ -245,23 +251,48 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ID_HOME:
XLog.v("点击菜单【首页】");
_webView.navigateToDefaultPage(); // 页面初始化
if (_webInterop.isOfflineMode()) {
// 离线模式不允许执行后退操作
Toast.makeText(this, "应用处于离线模式,无法执行页面导航。", Toast.LENGTH_LONG).show();
} else {
XLog.v("点击菜单【首页】");
_webView.navigateToDefaultPage(); // 页面初始化
}
break;
case MENU_ID_REFRESH:
XLog.v("点击菜单【刷新】");
_webView.reload(); // 仅刷新
if (_webInterop.isOfflineMode()) {
// 离线模式不允许执行后退操作
Toast.makeText(this, "应用处于离线模式,无法执行页面刷新。", Toast.LENGTH_LONG).show();
} else {
XLog.v("点击菜单【刷新】");
_webView.reload(); // 仅刷新
}
break;
case MENU_ID_SETTINGS:
startActivity(new Intent(this, SettingActivity.class));
if (_webInterop.isOfflineMode()) {
// 离线模式不允许执行后退操作
Toast.makeText(this, "应用处于离线模式,无法打开【设置】页面。", Toast.LENGTH_LONG).show();
} else {
startActivity(new Intent(this, SettingActivity.class));
}
break;
case MENU_ID_HELP:
XLog.v("点击菜单【帮助】");
_webView.loadUrl(ConfigManager.getInstance().getHelpUrl());
if (_webInterop.isOfflineMode()) {
// 离线模式不允许执行后退操作
Toast.makeText(this, "应用处于离线模式,无法打开【帮助】页面。", Toast.LENGTH_LONG).show();
} else {
XLog.v("点击菜单【帮助】");
_webView.loadUrl(ConfigManager.getInstance().getHelpUrl());
}
break;
case MENU_ID_ABOUT:
XLog.v("点击菜单【关于】");
_webView.loadUrl(ConfigManager.getInstance().getAboutUrl());
if (_webInterop.isOfflineMode()) {
// 离线模式不允许执行后退操作
Toast.makeText(this, "应用处于离线模式,无法打开【关于】页面。", Toast.LENGTH_LONG).show();
} else {
XLog.v("点击菜单【关于】");
_webView.loadUrl(ConfigManager.getInstance().getAboutUrl());
}
break;
// 你可以在这里处理新创建菜单的点击事件
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package com.huozige.lab.container.platform;

import com.elvishew.xlog.XLog;

import android.webkit.WebView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.elvishew.xlog.XLog;
import com.huozige.lab.container.utilities.PermissionsUtility;
import com.huozige.lab.container.webview.HACWebView;

/**
* 与HTML元素直接交互的操作接口
*/
public abstract class AbstractWebInterop {


protected WebView webView; // 浏览器内核
protected HACWebView webView; // 浏览器内核

/**
* 设置某个输入类HTML元素的值
Expand Down Expand Up @@ -53,6 +53,16 @@ public void executeJavaScript(String jsSegment) {
XLog.v("开始在浏览器中执行脚本:" + jsSegment);
}

/**
* 弹出Toast消息
*
* @param text 消息
*/
public void showToast(String text) {
getActivityContext().runOnUiThread(() -> Toast.makeText(getActivityContext(), text, Toast.LENGTH_LONG).show());
XLog.v("以Toast形式弹出消息:" + text);
}

/**
* 去掉JavaScript的关键字,替换为HTML编码
*
Expand Down Expand Up @@ -171,7 +181,7 @@ public void requirePermission(String[] permissions, Runnable successAction) {
*
* @param webView 浏览器实例
*/
public void setWebView(WebView webView) {
public void setWebView(HACWebView webView) {
this.webView = webView;
}

Expand All @@ -180,7 +190,26 @@ public void setWebView(WebView webView) {
*
* @return 浏览器实例
*/
public WebView getWebView() {
public HACWebView getWebView() {
return this.webView;
}

private static boolean _isOfflineMode;

/**
* 设置离线模式
* @param mode 是否为离线模式
*/
public void setOfflineMode(boolean mode) {
_isOfflineMode = mode;
XLog.v("切换离线模式为:" + mode);
}

/**
* 获取当前是否为离线模式
* @return 是否为离线模式
*/
public boolean isOfflineMode() {
return _isOfflineMode;
}
}
Loading

0 comments on commit fb1ad97

Please sign in to comment.