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