我正在嘗試使用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