У меня есть код для инициализации моего адаптера NFC, но я не уверен, как инициализировать переменные во время onCreate. Приложение может быть инициализировано независимо от того, находится ли NFC TAG рядом, т.е. если кто-то просто открыл приложение. Поэтому, когда я перехожу к этой строке NfcV nfcMessage = NfcV.get(new TagGet().getTag());
, она вылетает, потому что она нулевая, там нет тега, если вы просто загружаете приложение самостоятельно. Как мне проверить здесь на != null
Я не уверен, какую часть проверить или как структурировать этот код.
В результате я хочу прочитать содержимое тега, если тег присутствует. В противном случае просто загрузите макет и дождитесь сканирования тега NfcV.
// Setup an intent filter for all MIME based dispatches
IntentFilter nfcv = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
try {
nfcv.addDataType("*/*");
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("fail", e);
}
mFilters = new IntentFilter[] {
nfcv,
};
// Setup a tech list for all NfcF tags
mTechLists = new String[][] { new String[] { NfcV.class.getName() } };
//mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists);
NfcV nfcMessage = NfcV.get(new TagGet().getTag());
byte[] data = new byte[2048]; //tag length can't be any larger
String value = "";
try {
data = nfcMessage.transceive(new byte[2048]);
value = new String(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();