Android 在现有项目中使用Zebra库时使用空指针
实际上,我正在尝试将zebra EMDK库实现到我现有的项目中。 我已经一步一步地遵循了以下步骤,并且在一个新项目中,所有这些都非常有效,但是当我尝试在我的项目中使用库时,我遇到了以下错误:Android 在现有项目中使用Zebra库时使用空指针,android,barcode-scanner,Android,Barcode Scanner,实际上,我正在尝试将zebra EMDK库实现到我现有的项目中。 我已经一步一步地遵循了以下步骤,并且在一个新项目中,所有这些都非常有效,但是当我尝试在我的项目中使用库时,我遇到了以下错误: 2019-03-13 15:24:55.720 4671-4678/it.gabtamagnini.realco E/art: Failed sending reply to debugger: Broken pipe 2019-03-13 15:25:01.239 4671-4671/it.gabtama
2019-03-13 15:24:55.720 4671-4678/it.gabtamagnini.realco E/art: Failed sending reply to debugger: Broken pipe
2019-03-13 15:25:01.239 4671-4671/it.gabtamagnini.realco E/AndroidRuntime: FATAL EXCEPTION: main
Process: it.gabtamagnini.realco, PID: 4671
java.lang.RuntimeException: Unable to start activity ComponentInfo{it.gabtamagnini.realco/it.gabtamagnini.realco.InventarioActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contentEquals(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contentEquals(java.lang.CharSequence)' on a null object reference
at it.gabtamagnini.realco.InventarioActivity.handleDecodeData(InventarioActivity.java:1160)
at it.gabtamagnini.realco.InventarioActivity.onCreate(InventarioActivity.java:129)
at android.app.Activity.performCreate(Activity.java:6723)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
获取空指针的代码:
private void handleDecodeData(Intent i) {
//Check the intent action is for us
if (i.getAction().contentEquals("com.symbol.emdksample.RECVR")) {
//Get the source of the data
String source = i.getStringExtra("com.motorolasolutions.emdk.datawedge.source");
//Check if the data has come from the Barcode scanner
if (source.equalsIgnoreCase("scanner")) {
//Get the data from the intent
String data = i.getStringExtra("com.motorolasolutions.emdk.datawedge.data_string");
//Check that we have received data
if(data != null && data.length() > 0)
{
Toast.makeText(InventarioActivity.this,data,Toast.LENGTH_LONG).show();
}
}
}
}
那篇教程已经很老了——数据捕获配置文件最近被弃用了。如果您在较新的设备上尝试此功能,那么我怀疑com.motorolasolutions。。。意图已被删除,因为额外字符串“com.symbol.datawedge.data_”字符串已存在相当长一段时间。我建议阅读解释数据捕获配置文件发生了什么的文章,但是如果您正在寻找一个已知的工作示例,那么应该是一个很好的起点
为清楚起见,我为Zebra工作,该教程已经很老了-数据捕获配置文件最近被弃用。如果您在较新的设备上尝试此功能,那么我怀疑com.motorolasolutions。。。意图已被删除,因为额外字符串“com.symbol.datawedge.data_”字符串已存在相当长一段时间。我建议阅读解释数据捕获配置文件发生了什么的文章,但是如果您正在寻找一个已知的工作示例,那么应该是一个很好的起点
为了清楚起见,我为Zebra工作所以简单地说,EMDK不受欢迎?作为设备,我这里有TC20、TC200J和MC330M。是否需要使用来自EMDK的DataWedge中的配置文件配置来设置扫描仪应该读取的条形码?实际上,它工作了一段时间,但在其他测试之后,意图广播刚刚停止工作。嗨,不,很抱歉造成混淆,但EMDK没有被弃用,仅EMDK中允许配置DataWedge的方面。您通常会使用EMDK或DataWedge来控制扫描仪并将条形码数据接收到应用程序中,如果您使用DataWedge,您可以使用标准的Android意图对其进行配置,即无需使用EMDK。简单地说,EMDK是不推荐的吗?作为设备,我这里有TC20、TC200J和MC330M。是否需要使用来自EMDK的DataWedge中的配置文件配置来设置扫描仪应该读取的条形码?实际上,它工作了一段时间,但在其他测试之后,意图广播刚刚停止工作。嗨,不,很抱歉造成混淆,但EMDK没有被弃用,仅EMDK中允许配置DataWedge的方面。您通常会使用EMDK或DataWedge来控制扫描仪并将条形码数据接收到应用程序中,如果您使用DataWedge,则可以使用标准Android意图对其进行配置,即无需使用EMDK。