Java 无法获取通知表单扫描程序

Java 无法获取通知表单扫描程序,java,android,barcode-scanner,Java,Android,Barcode Scanner,我正在使用DataWedget开发Zebra Technologies TC8000扫描仪的应用程序。我正在使用Android Studio 3.5和Flatter作为移动框架 我在主要活动中使用广播接收器,并试图在Dart代码中使用回拨 当我拉动扫描仪上的触发器时,我在logcat中看到以下内容: 04-22 11:35:12.946 1009-1009/? D/ScannerPlugin: Scan status changed from SCAN_STATUS_WAITFORTRIGGER

我正在使用DataWedget开发Zebra Technologies TC8000扫描仪的应用程序。我正在使用Android Studio 3.5和Flatter作为移动框架

我在主要活动中使用广播接收器,并试图在Dart代码中使用回拨

当我拉动扫描仪上的触发器时,我在logcat中看到以下内容:

04-22 11:35:12.946 1009-1009/? D/ScannerPlugin: Scan status changed from SCAN_STATUS_WAITFORTRIGGER to SCAN_STATUS_SCANNING
04-22 11:35:12.946 1009-1009/? D/Client: requested to send: 110 (ScannerStateChanged): SCAN_STATUS_SCANNING
04-22 11:35:12.956 1009-1009/? D/Client: sent: 110 (ScannerStateChanged): SCAN_STATUS_SCANNING
04-22 11:35:12.956 1009-1009/? D/ScannerPlugin: Status:SCANNING;ProfileName:Profile0 (default)
04-22 11:35:12.956 1009-1009/? D/ScannerStateChanged: deserialize: state: SCAN_STATUS_SCANNING
04-22 11:35:12.966 1009-1009/? D/Protocol: parsed 110 (ScannerStateChanged): SCAN_STATUS_SCANNING
04-22 11:35:12.966 1009-1009/? D/SwipeAssistService: handleMessage(110 (ScannerStateChanged): SCAN_STATUS_SCANNING), connected clients: 1
04-22 11:35:13.416 665-665/? E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=com.symbol.datawedge/0x1090064 vibrate=null sound=null defaults=0x0 flags=0x11 kind=[null])
04-22 11:35:13.416 665-665/? E/NotificationService: WARNING: In a future release this will crash the app: com.symbol.datawedge
04-22 11:35:13.436 1009-1009/? D/ScannerPlugin: Scan status changed from SCAN_STATUS_SCANNING to SCAN_STATUS_WAITFORTRIGGER
04-22 11:35:13.436 1009-1009/? D/Client: requested to send: 110 (ScannerStateChanged): SCAN_STATUS_WAITFORTRIGGER
04-22 11:35:13.436 1009-1009/? D/Client: sent: 110 (ScannerStateChanged): SCAN_STATUS_WAITFORTRIGGER
04-22 11:35:13.436 1009-1009/? D/ScannerPlugin: Status:WAITING;ProfileName:Profile0 (default)
04-22 11:35:13.436 1009-1009/? D/ScannerStateChanged: deserialize: state: SCAN_STATUS_WAITFORTRIGGER
04-22 11:35:13.436 1009-1009/? D/Protocol: parsed 110 (ScannerStateChanged): SCAN_STATUS_WAITFORTRIGGER
04-22 11:35:13.436 1009-1009/? D/SwipeAssistService: handleMessage(110 (ScannerStateChanged): SCAN_STATUS_WAITFORTRIGGER), connected clients: 1
扫描光束打开,扫描仪确认条形码读取,但我没有收到事件。我很担心这句话:

04-22 11:35:13.416 665-665/? E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=com.symbol.datawedge/0x1090064 vibrate=null sound=null defaults=0x0 flags=0x11 kind=[null])
我检查了Zebra的文件并修改了代码以注册广播接收器。这是我的主要活动代码:

导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.os.Bundle;
导入android.util.Log;
导入io.flatter.app.flatterActivity;
导入io.flatter.plugin.common.EventChannel;
导入io.flatter.plugin.common.MethodCall;
导入io.flatter.plugin.common.MethodChannel;
导入io.flatter.plugin.common.MethodChannel.MethodCallHandler;
导入io.flatter.plugin.common.MethodChannel.Result;
导入com.goodyear.flatter\u plugin.R;
导入静态android.content.ContentValues.TAG;
公共类MainActivity扩展了公共类MainActivity{
私有静态字符串意图\u操作;
私有静态字符串扫描数据;
专用静态字符串信道;
私有静态字符串方法;
私有静态字符串通知\u操作;
私有静态字符串通知\类型\扫描程序\状态;
私有结果条码结果;
私有无效注册表接收者(){
IntentFilter=newintentfilter();
filter.addAction(通知动作);
寄存器接收器(广播接收器、滤波器);
}
私有无效取消注册接收者(){
未注册接收器(广播接收器);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
Log.i(“条形码”、“内部创建”);
super.onCreate(savedInstanceState);
INTENT\u ACTION=getResources().getString(R.string.activity\u INTENT\u filter\u ACTION);
SCAN\u DATA=getResources().getString(R.string.datawedge\u intent\u key\u DATA);
通道=getResources().getString(R.string.barcode\u方法\u通道);
方法=getResources().getString(R.string.barcode_方法);
NOTIFICATION_ACTION=getResources().getString(R.string.datawedge_NOTIFICATION_ACTION);
通知\类型\扫描程序\状态=getResources().getString(R.string.datawedge\通知\扫描程序\状态);
registerReceiver();
Bundle b=新Bundle();
b、 putString(“com.symbol.datawedge.api.APPLICATION_NAME”,“com.example.intettest”);
b、 putString(“com.symbol.datawedge.api.NOTIFICATION_TYPE”、“SCANNER_STATUS”);
意图i=新意图();
i、 setAction(“com.symbol.datawedge.api.ACTION”);
i、 putExtra(“com.symbol.datawedge.api.REGISTER_FOR_NOTIFICATION”,b);/(1)
本条第(i)款;
新建MethodChannel(GetFlatterView(),CHANNEL).setMethodCallHandler(
新的MethodCallHandler(){
@凌驾
MethodCall上的公共无效(MethodCall调用,结果){
Log.i(“条形码”、“内部onMethodCall”);
if(call.method.equals(method)){
Log.i(“条形码”,“结果=”+结果);
条形码结果=结果;
}
Log.i(“条形码”、“离开方法调用”);
}
}
);
Log.i(“条形码”、“创建时留下”);
}
@凌驾
受保护的空onDestroy(){
未注册接收者();
super.ondestory();
}
private BroadcastReceiver BroadcastReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
Log.i(“条形码”、“内部接收”);
String action=intent.getAction();
Log.d(“条形码”,“DataWedge应用程序”#操作:+操作);
开关(动作){
案例“com.symbol.datawedge.api.NOTIFICATION_ACTION”:
日志状态(意图);
打破
案例“com.com.goodyear.ACTION”:
ReadScanda(意图);
打破
}
}
};
私有无效日志状态(意图){
if(intent.hasExtra(“com.symbol.datawedge.api.NOTIFICATION”)){
Bundle b=intent.getBundleExtra(“com.symbol.datawedge.api.NOTIFICATION”);
字符串通知类型=b.getString(“通知类型”);
if(通知类型!=null){
Log.d(“条形码”、“扫描仪”状态:状态:“+b.getString(“状态”)+”,profileName:“+b.getString(“配置文件名称”));
}
}
}
私有void readscanda(意图){
字符串条形码=intent.getStringExtra(扫描数据);
//String decodedLabelType=intent.getStringExtra(getResources().getString(R.String.datawedge\u intent\u key\u label\u type));
试一试{
Log.i(“条形码”,“条形码=”+条形码);
条形码结果。成功(条形码);
}捕获(例外e){
//当我们接收广播时,如果UI不存在,则捕获
}
Log.i(“条形码”、“收到时离开”);
}
}
这令人沮丧。问题似乎不在我的代码中,因为我已经在
onReceive()
事件中设置了断点,并且该方法不会触发


不确定问题是什么。

通知\u操作仅用于通知应用程序扫描仪光束正在扫描、空闲等,它实际上不包含任何扫描数据。我认为您混淆了DataWedge API和DataWedge意向输出插件,我没有一个颤振示例,但请看一下我在从DataWedge接收扫描数据时所做的快速Java教程:

<