You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Zebra Datawedge API切换RFID存储区后无Intent接收问题

Zebra MC33 RFID应用切换至USER存储区后无法接收Datawedge广播Intent

我正在为Zebra MC33设备开发一款RFID应用,用于读取标签ID(对应Memorybank NONE)和标签用户数据(对应Memorybank USER)。由于应用版本过低且无法升级,无法使用Zebra官方SDK。

初始状态下应用处于Memorybank NONE模式,能够读取标签ID并通过Intent接收数据。但一旦通过软件切换至USER存储区后,广播接收器不再响应Intent,不过Datawedge应用中的存储区配置已被正确修改。

切换存储区方法

public static void ChangeMemoryBank(Android.Content.Context context, string memoryBank) 
{
    setConfigBundle.PutString("PROFILE_NAME", PROFILE_NAME);
    setConfigBundle.PutString("PROFILE_ENABLED", "true");
    setConfigBundle.PutString("CONFIG_MODE", "UPDATE");
    setConfigBundle.PutString("RESET_CONFIG", "false");

    rfidConfigParamBundle.PutString("rfid_memory_bank", memoryBank);
    rfidConfigBundle.PutString("PLUGIN_NAME", "RFID");
    rfidConfigBundle.PutString("RESET_CONFIG", "false");
    rfidConfigBundle.PutBundle("PARAM_LIST", rfidConfigParamBundle);

    IList<IParcelable> configBundles = new List<IParcelable>
    {
        rfidConfigBundle
    };
    setConfigBundle.PutParcelableArrayList("PLUGIN_CONFIG", configBundles);

    // Broadcast the intent
    Intent intent = new Intent();
    intent.SetAction("com.symbol.datawedge.api.ACTION");
    intent.PutExtra("com.symbol.datawedge.api.SET_CONFIG", setConfigBundle);
    context.SendBroadcast(intent);
}

停止RFID扫描

public void StopRFIDScan(Object source, ElapsedEventArgs e) {
    Intent intent = new Intent();
    intent.SetAction("com.symbol.datawedge.api.ACTION");
    intent.PutExtra("com.symbol.datawedge.api.SOFT_RFID_TRIGGER", "STOP_SCANNING");
    SendBroadcast(intent);
    
}

启动RFID扫描

public void StartRFIDScan() {
    Intent intent = new Intent();
    intent.SetAction("com.symbol.datawedge.api.ACTION");
    intent.PutExtra("com.symbol.datawedge.api.SOFT_RFID_TRIGGER", "START_SCANNING");
    SendBroadcast(intent);
}

Intent监听器(广播接收器收到Intent时调用)

public void IntentListener(string data) 
{
    if(data.Length < 50) // True if data contains the Tag ID (always smaller than 50 characters)
    {
        ValueText.Text = data;
        ChangeMemoryBank("1"); //Switch to USER Memorybank
    } else {
        ValueText.Text = "|" + data;
        ChangeMemoryBank("0"); //Switch to NO Memorybank
    }
}

广播接收器

[BroadcastReceiver(Enabled = true)]
public class ScanReceiver:BroadcastReceiver
{
    /// <summary>
    /// Called if the broadcast receiver gets an intent
    /// </summary>
    /// <param name="context"></param>
    /// <param name="intent"></param>
    public override void OnReceive(Context context, Intent intent) {
        string dataString = intent.GetStringExtra("com.symbol.datawedge.data_string");

        SingleInActivity.Instance.RunOnUiThread(() => {
            SingleInActivity.Instance.IntentListener(dataString);
        });
    }
}

内容的提问来源于stack exchange,提问作者DaveR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:30:37