From 43be03e95650d55611ce6195ae5d875f432ca123 Mon Sep 17 00:00:00 2001 From: NathanGuo Date: Tue, 11 Nov 2025 10:00:56 +0800 Subject: [PATCH 1/4] scan return current --- Broadcast_Mode_ContinuousScanStart_Async.cs | 4 ++++ Resources/AndroidPDACommand.js | 1 + 2 files changed, 5 insertions(+) diff --git a/Broadcast_Mode_ContinuousScanStart_Async.cs b/Broadcast_Mode_ContinuousScanStart_Async.cs index 3994b07..2c0301b 100644 --- a/Broadcast_Mode_ContinuousScanStart_Async.cs +++ b/Broadcast_Mode_ContinuousScanStart_Async.cs @@ -24,6 +24,10 @@ namespace AndroidPDACommand [Browsable(false)] [ResultToProperty] public string SubCommandParam1 { get; set; } = "Totally_Received"; + + [Browsable(false)] + [ResultToProperty] + public string SubCommandParam2 { get; set; } = "Current_Received"; } } diff --git a/Resources/AndroidPDACommand.js b/Resources/AndroidPDACommand.js index c45d805..1ea5935 100644 --- a/Resources/AndroidPDACommand.js +++ b/Resources/AndroidPDACommand.js @@ -261,6 +261,7 @@ var Broadcast_Mode_ContinuousScanStart_Async_Command = (function (_super) { commandID: new Date().valueOf().toString(), initParams: { "Totally_Received": payload, + "Current_Received": payload2, "IsSuccess": true, "Error": "" }, -- Gitee From 2ed22cfed6b8b607f19b8b45ae4ba6f963a86534 Mon Sep 17 00:00:00 2001 From: NathanGuo Date: Tue, 9 Dec 2025 17:24:02 +0800 Subject: [PATCH 2/4] BiometricAuth --- AndroidPDACommand.csproj | 5 ++ Biometric_Auth_Async.cs | 25 ++++++++++ Biometric_Available_Async.cs | 29 ++++++++++++ Resources/AndroidPDACommand.js | 81 ++++++++++++++++++++++++++++++++- Resources/Icon_Biometric.png | Bin 0 -> 569 bytes 5 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 Biometric_Auth_Async.cs create mode 100644 Biometric_Available_Async.cs create mode 100644 Resources/Icon_Biometric.png diff --git a/AndroidPDACommand.csproj b/AndroidPDACommand.csproj index bf8628c..9d634e0 100644 --- a/AndroidPDACommand.csproj +++ b/AndroidPDACommand.csproj @@ -75,6 +75,7 @@ + @@ -82,6 +83,7 @@ + @@ -205,6 +207,9 @@ + + + "D:\ForguncyCode\puglin\PluginTools\PluginPackageTool\bin\Release\PluginPackageTool.exe" "$(ProjectDir)\" "$(ConfigurationName)" diff --git a/Biometric_Auth_Async.cs b/Biometric_Auth_Async.cs new file mode 100644 index 0000000..8395db6 --- /dev/null +++ b/Biometric_Auth_Async.cs @@ -0,0 +1,25 @@ +using System.ComponentModel; +using GrapeCity.Forguncy.Commands; +using GrapeCity.Forguncy.Plugin; + +namespace AndroidPDACommand +{ + [Icon("pack://application:,,,/AndroidPDACommand;component/Resources/Icon_Biometric.png")] + [Category("活字格安卓容器(HAC)")] + [OrderWeight(81)] + public class Biometric_Auth_Async : BaseAsyncCommand + { + public override string ToString() + { + return "生物认证识别"; + } + + [DisplayName("认证模式")] + [ComboProperty(ValueList = "BIOMETRIC_STRONG|BIOMETRIC_WEAK|DEVICE_CREDENTIAL", DisplayList = "强生物识别|弱生物识别|设备密码识别")] + public string AuthType { get; set; } = "BIOMETRIC_STRONG"; + + [Browsable(false)] + [ResultToProperty] + public string AuthResultMessage { get; set; } = "AuthResultMessage"; + } +} \ No newline at end of file diff --git a/Biometric_Available_Async.cs b/Biometric_Available_Async.cs new file mode 100644 index 0000000..6894abc --- /dev/null +++ b/Biometric_Available_Async.cs @@ -0,0 +1,29 @@ +using System.ComponentModel; +using GrapeCity.Forguncy.Commands; +using GrapeCity.Forguncy.Plugin; + +namespace AndroidPDACommand +{ + [Icon("pack://application:,,,/AndroidPDACommand;component/Resources/Icon_Biometric.png")] + [Category("活字格安卓容器(HAC)")] + [OrderWeight(80)] + public class Biometric_Available_Async : BaseAsyncCommand + { + public override string ToString() + { + return "生物认证检测"; + } + + [DisplayName("认证模式")] + [ComboProperty(ValueList = "BIOMETRIC_STRONG|BIOMETRIC_WEAK|DEVICE_CREDENTIAL", DisplayList = "强生物识别|弱生物识别|设备密码识别")] + public string AuthType { get; set; } = "BIOMETRIC_STRONG"; + + [Browsable(false)] + [ResultToProperty] + public string IsAvailable { get; set; } = "IsAvailable"; + + [Browsable(false)] + [ResultToProperty] + public string VerifyMessage { get; set; } = "VerifyMessage"; + } +} \ No newline at end of file diff --git a/Resources/AndroidPDACommand.js b/Resources/AndroidPDACommand.js index 1ea5935..0364772 100644 --- a/Resources/AndroidPDACommand.js +++ b/Resources/AndroidPDACommand.js @@ -2482,4 +2482,83 @@ var OnKeyDown_Listen_Stop_All_Command = (function (_super) { return OnKeyDown_Listen_Stop_All_Command; }(Forguncy.CommandBase)); -Forguncy.CommandFactory.registerCommand("AndroidPDACommand.OnKeyDown_Listen_Stop_All, AndroidPDACommand", OnKeyDown_Listen_Stop_All_Command); \ No newline at end of file +Forguncy.CommandFactory.registerCommand("AndroidPDACommand.OnKeyDown_Listen_Stop_All, AndroidPDACommand", OnKeyDown_Listen_Stop_All_Command); + +var Biometric_Auth_Async_Command = (function (_super) { + __extends(Biometric_Auth_Async_Command, _super); + function Biometric_Auth_Async_Command() { + return _super !== null && _super.apply(this, arguments) || this; + } + + Biometric_Auth_Async_Command.prototype.execute = function () { + + var me = this; + var params = this.CommandParam; + var authType = this.evaluateFormula(params.AuthType); + + var ticket = HAC_GenerateCallbackTicket(me, function (payload, payload2) { + me.CommandExecutor.excuteCommand(me.CommandParam.CommandList, { + runTimePageName: me.CommandExecutingInfo.runTimePageName, + commandID: new Date().valueOf().toString(), + initParams: { + "AuthResultMessage": payload, + "IsSuccess": true, + "Error": "" + }, + locationString: "执行window.biometric.biometricAuthAsync" + }); + }); + + if (window.biometric && window.biometric.biometricAuthAsync) { + window.biometric.biometricAuthAsync(authType, ticket); + } else { + HAC_CallFunctionOutOfHAC(); + } + + }; + + + return Biometric_Auth_Async_Command; +}(Forguncy.CommandBase)); + +Forguncy.CommandFactory.registerCommand("AndroidPDACommand.Biometric_Auth_Async, AndroidPDACommand", Biometric_Auth_Async_Command); + +var Biometric_Available_Async_Command = (function (_super) { + __extends(Biometric_Available_Async_Command, _super); + function Biometric_Available_Async_Command() { + return _super !== null && _super.apply(this, arguments) || this; + } + + Biometric_Available_Async_Command.prototype.execute = function () { + + var me = this; + var params = this.CommandParam; + var authType = this.evaluateFormula(params.AuthType); + + var ticket = HAC_GenerateCallbackTicket(me, function (payload, payload2) { + me.CommandExecutor.excuteCommand(me.CommandParam.CommandList, { + runTimePageName: me.CommandExecutingInfo.runTimePageName, + commandID: new Date().valueOf().toString(), + initParams: { + "IsAvailable": payload, + "VerifyMessage": payload2, + "IsSuccess": true, + "Error": "" + }, + locationString: "执行window.biometric.isAvailableAuth" + }); + }); + + if (window.biometric && window.biometric.isAvailableAuth) { + window.biometric.isAvailableAuth(authType, ticket); + } else { + HAC_CallFunctionOutOfHAC(); + } + + }; + + + return Biometric_Available_Async_Command; +}(Forguncy.CommandBase)); + +Forguncy.CommandFactory.registerCommand("AndroidPDACommand.Biometric_Available_Async, AndroidPDACommand", Biometric_Available_Async_Command); \ No newline at end of file diff --git a/Resources/Icon_Biometric.png b/Resources/Icon_Biometric.png new file mode 100644 index 0000000000000000000000000000000000000000..778042072e5d375e61b88827cd35521db50ba172 GIT binary patch literal 569 zcmV-90>=G`P)QudR*}N5 z#QS9KhPaj&6^=7W1Gq zS8g6+T$Td)@@9i{-&!$8m0ox$&mO!Hk1>G3q@g;BdDY`7kR@e@rQ0OXWGnoYDh%UiYzByiy=Zc6Ej%XZ~Ew`{p&$ z7b}e~l1|NUC0(0lGF2#cVv-sk+4Y=2I_{itI&zzMg}J1~v)Y~VbgIx&AcF=U>F=y+ zy*#VRFLA3p8<^GA%dgUWH39$t|Np~^`;`Cy00v1!K~w_(U|Di3!TA2g00000NkvXX Hu0mjf-?s+w literal 0 HcmV?d00001 -- Gitee From 35f62bfdb06b4315759f3846cbfc95d044d4cb09 Mon Sep 17 00:00:00 2001 From: NathanGuo Date: Tue, 27 Jan 2026 16:42:11 +0800 Subject: [PATCH 3/4] fix single scan not modal reference --- Resources/AndroidPDACommand.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/AndroidPDACommand.js b/Resources/AndroidPDACommand.js index 0364772..dafc0e1 100644 --- a/Resources/AndroidPDACommand.js +++ b/Resources/AndroidPDACommand.js @@ -131,7 +131,7 @@ var Broadcast_Mode_Scan_Async_Command = (function (_super) { if (window.pda && window.pda.modal_scanAsync) { if (!isModal || isModal === 0) { - window.pda.modal_scanAsync(ticket, 1); + window.pda.continuous_scanAsync(ticket, 1); } else { window.pda.modal_scanAsync(ticket); } -- Gitee From 65078b6ae0189ef78a5ace090797c26e95009378 Mon Sep 17 00:00:00 2001 From: NathanGuo Date: Tue, 27 Jan 2026 16:52:08 +0800 Subject: [PATCH 4/4] update version --- PluginConfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PluginConfig.json b/PluginConfig.json index fa405e8..df57b62 100644 --- a/PluginConfig.json +++ b/PluginConfig.json @@ -12,7 +12,7 @@ "name": "PDA(Android)交互命令", "pluginType": "command", "guid": "{16B8DF69-1379-41C1-9194-BE89BAF8BB32}", - "version": "1.20.2.0", + "version": "1.21.0.0", "dependenceVersion": "8.0.0.0", "bundleJavaScript": true, "bundleCSS": true -- Gitee