private static final String ACTION_CLAIM_SCANNER = "com.honeywell.aidc.action.ACTION_CLAIM_SCANNER";
    private static final String EXTRA_PROPERTIES = "com.honeywell.aidc.extra.EXTRA_PROPERTIES";
    @Override
    public void use() {
        // 指定扫码结果广播接收器的 ACTION 名称
        Bundle properties = new Bundle();
        properties.putBoolean("DPR_DATA_INTENT", true);
        properties.putString("DPR_DATA_INTENT_ACTION", ACTION_BARCODE_DATA);
        // 如需启用指定的 profile, 可 putExtra(EXTRA_PROFILE, "MyProfile1")
        Intent intent = new Intent(ACTION_CLAIM_SCANNER).putExtra(EXTRA_PROPERTIES, properties);
        context.sendBroadcast(intent);
        // 注册扫码结果广播接收器
        context.registerReceiver(receiver, new IntentFilter(ACTION_BARCODE_DATA));
    }
    private static final String ACTION_RELEASE_SCANNER = "com.honeywell.aidc.action.ACTION_RELEASE_SCANNER";
    @Override
    public void release() {
        listeners.clear();
        context.unregisterReceiver(receiver);
        context.sendBroadcast(new Intent(ACTION_RELEASE_SCANNER).setPackage("com.intermec.datacollectionservice"));
    }
|  |      1yzkos      2022-07-06 08:52:42 +08:00 uniapp 可以用 js 开发安卓 APP ,不太了解你说的 [收发原生广播] 如果 uniapp 不支持,可以用原生开发个 [收发原生广播] 的插件,引入到 uniapp 里用 js 调用即可。 | 
|  |      2lbb2445      2022-07-06 08:53:24 +08:00 uniapp ,然后试着做安卓插件 | 
|  |      3ifdef      2022-07-06 08:53:38 +08:00 你 webview 不是要放在 activity/fragment 里吗,在广播的 onReceive 里 reload 一下不就传进 webview 里了? | 
|  |      4b1iy      2022-07-06 09:02:12 +08:00 一般 PDA 都能设置结果返回方式,先找设置改改试试 广播就只能自定义 native 插件,native 保存 js callback 引用,间接实现广播 | 
|  |      5jswh      2022-07-06 09:03:02 +08:00  1 1. 混合开发有挺多方案的。uniapp ,react native ,Ionic ,也基本都支持原生插件。 2. webview 可以用 jsbridge 通信。 3. 按你的需求弄个小程序结构的程序框架蛮合适的。 | 
|  |      6lizhenda      2022-07-06 09:07:10 +08:00 专业的人做专业的事,钱多另说 | 
|      7nitmali      2022-07-06 09:11:02 +08:00  1 uniapp 可以 demo: //获取 activity const main = plus.android.runtimeMainActivity(); const IntentFilter = plus.android.importClass('android.content.IntentFilter'); const filter = new IntentFilter (); // 监听广播 filter.addAction("你的广播") const receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function(context, intent) { plus.android.importClass(intent) // TODO 操作数据 console.log(JSON.stringify(intent)) } }) // 注册监听 main.registerReceiver(receiver, filter); // 关闭 // main.unregisterReceiver(receiver); | 
|      8bthulu OP @nitmali 感谢. 刚才试装了下 uniapp 官方 demo, 感觉卡顿还是比较严重, PDA 上的 cpu 是 MSM8916, 比手机上的性能差远了. | 
|  |      9gzf6      2022-07-06 09:43:40 +08:00 via Android Capacitor 或者 cordova ,按照他们的规范自己写插件也行 | 
|  |      10x13945      2022-07-06 09:44:01 +08:00 via Android 那就换 rn 吧,开发效率和前端有一拼 | 
|  |      11vone      2022-07-06 09:50:09 +08:00 Android PDA 的扫码器不都是模拟键盘的输入然后加一个回车键,扫码结果可以通过焦点状态的输入框接收到的,不用自己写接收逻辑。 而且就算是你们需要底层开发去支持扫码器,也应该是开发一个单独的应用去提供扫描和接收结果的功能,然后有需要的时候安装这个应用,由这个应用在需要时触发扫码,然后把扫描结果转发给焦点状态的输入框。 | 
|      12bthulu OP @vone 你是没开发过工厂工人用的 app, 工人还给你去戳一下输入框激活焦点? 想都不用想. 工人只想按一下 PDA 上的物理扫码键然后就完事了. 再多点一下输入框, 工人要造反的. | 
|      13lsyAndroid      2022-07-06 10:01:53 +08:00 走 jsbridge ,前端页面用 js 写,原生 app 侧接收 js 发送的数据,进行数据处理。 | 
|      14wenruoliushui      2022-07-06 10:02:05 +08:00 js 只能跟原生交互,离不开原生。 | 
|  |      16james2013      2022-07-06 10:16:35 +08:00 是不是你用 Android Studio 的方式不对呢? 使用 Android Studio 运行是使用 Run 按钮 点击 Run 按钮可以直接安装到设备上,你这种小的 app 估计只需要几秒就能装上 | 
|      17flytsuki      2022-07-06 10:17:06 +08:00 android 加 flutter 吧,比 webview 好用多了 | 
|      18bthulu OP @james2013 哪这么快哦, 可能是我笔记本性能太差了吧, PDA 性能也不行吧, 神州本, i5-8300H, 实测至少 15 秒. | 
|  |      19xiangyuecn      2022-07-06 10:38:01 +08:00 自己简单写一个 jsbridge 就行了,java+js 200 行撑死,网页界面页面可以直接复用桌面版的,微调一下改成移动版 别听什么 uniapp react flutter ,纯粹心智负担 | 
|  |      20ethusdt      2022-07-06 10:38:11 +08:00 via iPhone autojs | 
|  |      21yuuko      2022-07-06 10:40:45 +08:00 Capacitor native 部分搞个 native 插件 | 
|      22guxin0123      2022-07-06 10:49:38 +08:00 我干过 js 读取 nfc 也是 jsbridge | 
|  |      23codehz      2022-07-06 10:55:28 +08:00 你把检测原生广播的部分用 java 写,收到后调用页面中特定命名的全局函数,js 部分把这个函数实现了,后续工作就在 web 里做不就好了? | 
|  |      24wangtian2020      2022-07-06 11:39:05 +08:00 https://quasar.dev/ quasar 框架,vite 的毫秒级更新 在上面用自己编写的 cordova 插件,可以实现所有原生的功能,还能保留 web 的灵活性 用 PLC ,你们也是工业软件公司吗 | 
|      25NonClockworkChen      2022-07-06 12:40:19 +08:00  2 让新手搞 RN 的,大大地凉心 | 
|      26OldDriver8848      2022-07-06 14:10:45 +08:00 flutter 热重载,改完立刻就能看到效果 | 
|  |      27cenbiq      2022-07-06 15:48:26 +08:00 via iPhone 可以试试 jetpack compose | 
|  |      28404neko      2022-07-06 15:51:20 +08:00 很多年前撸过一个小 APP, Javascript 是用 Rhino 支持的, 可以接收到广播 | 
|  |      29AV1      2022-07-06 16:02:05 +08:00 我也觉得 webview+jsbridge 是最好的,web 不搞花里胡哨的东西性能就不会差。 | 
|  |      30whyrookie      2022-07-06 16:04:15 +08:00 原生写个广播接收器,收到广播之后调用 js 中的方法,感觉这样比较轻量 | 
|      31xFrank      2022-07-06 21:48:56 +08:00 |