我有一种奇怪的情况,一行代码使一部手机崩溃,另一部没有。特定的行是我创建新的 NdefRecord() 的行。我在下面包含了代码片段。虽然评论中的版本适用于两款手机,但我仍然想知道为什么我会看到这种效果。
我不清楚 NdefRecord (short tnf, byte[] type, byte[] id, byte[] payload) 的构造函数的引用。根据源代码,它不应该使用 null 作为参数(Grepcode的源代码)。
private void setNdefBinary(byte[] bdata, int size, int index) {
NdefRecord record;
byte[] payload;
// copy bytes into payload
payload = new byte[size + 1];
payload[0] = (byte) (index & 0xff);
System.arraycopy(bdata, 0, payload, 1, size);
/* this works on Xperia S and Samsung S3
byte[] empty = new byte[0];
record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, payload); */
// this crashes on Xperia S, but works on Samsung S3
record = new NdefRecord(NdefRecord.TNF_UNKNOWN, null, null, payload);
ndefRecords[index] = record;
}