我正在尝试使用NdefRecord
/NdefMessage
编写NFC标签。NFC - NdefRecord错误构造
byte prefix = 0x04; // https://
byte[] uriBytes = "whatever.anywhere.com".getBytes();
byte[] recordBytes = new byte[uriBytes.length + 1];
recordBytes[0] = prefix;
System.arraycopy(uriBytes, 0, recordBytes, 1, uriBytes.length);
NdefRecord record = new NdefRecord(
NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_URI,
null,
recordBytes);
这是我创造我的NdefRecord
,我不能用createUri()
由于兼容性问题(createUri()
是因为API14上市,我需要API11 COMPAT ...)
它的棒棒糖的伟大工程(在5.0.2上测试)和KitKat上的事件(在4.4.3上测试)。
的事情,我的用户之一创建NdefRecord
时有崩溃:
NdefRecord record = new NdefRecord(
NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_URI,
null,
recordBytes);
他是ICS 4.0.2,我真的不能调试这个问题,因为我不知道这样的免费电话我不能用AVD来模拟这个问题。
有没有人看到我做什么错了?还是有另一种/更好的方式来做到这一点?
编辑: 下面是有关这个错误
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.application/com.your.application.NFCWriter}: java.lang.IllegalArgumentException: Illegal null argument
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4448)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Illegal null argument
at android.nfc.NdefRecord.<init>(NdefRecord.java:242)
at android.nfc.NdefRecord.<init>(NdefRecord.java:233)
at com.your.application.NFCWriter.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
... 11 more
代码看起来没问题。我建议你增加一些关于“崩溃”的更多细节,否则这个问题很可能成为焦点话题。例如,您可以使用bug报告中的堆栈跟踪(如果您的应用程序位于Play商店)或在您的应用程序中实现自己的异常处理程序,该应用程序为您提供调试信息。 – 2015-03-03 17:01:19
这是一个棘手的部分,应用程序不在游戏商店中,因为它是供我的工作场所内部使用的,所以我无法访问错误报告。 – 2015-03-03 17:43:14
我知道这个问题来自这个声明,因为用户能够设置断点来检查它何时崩溃,但我没有他的堆栈跟踪,但... 添加处理程序来发送调试信息听起来像一个好主意,但我怎样才能通过应用程序获取调试信息(然后发送它)? – 2015-03-03 17:50:56