gpt4 book ai didi

Android NFC,在onCreate 中做空检查?

转载 作者:行者123 更新时间:2023-11-29 22:19:09 24 4
gpt4 key购买 nike

我有初始化 NFC 适配器的代码,但我不确定如何在 onCreate 期间初始化变量。无论 NFC TAG 是否在附近,应用程序都可以被初始化,即。如果有人只是打开应用程序。所以当我进入这一行 NfcV nfcMessage = NfcV.get(new TagGet().getTag()); 它崩溃了,因为它是空的,如果你只是加载应用程序,那里没有标签靠你自己。我如何在此处检查 != null 我不确定要检查哪一部分或如何构建此代码。

结果是我想读取标签的内容IFF标签存在。否则只需加载布局并等待扫描 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();

最佳答案

Hear 是我制作第一个 Nfc 应用程序的基本方法的代码概要。我尝试替换值(我使用 nfcA 而不是 nfcV)以便您可以更好地阅读它。这是一个非常基本的结构,您需要用自己的代码填充部分,但它应该让您很好地了解 NFC 应用程序的结构如何工作。

public class Android_nfc_ibox extends Activity implements Runnable {




NfcAdapter mNfcAdapter;
private String[][] mTechLists;
PendingIntent pendingIntent;
Tag tag;
NfcA mTag;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Initialize the NFC adapter
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (mNfcAdapter != null) {
dialog_text.append("Tap an NFC tag for access\n\r");
} else {
dialog_text.append("This phone is not NFC enabled\n\r");
}

// Create the PendingIntent object which will contain the details of the tag that has been scanned
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

// Setup a tech list for all desired tag types
mTechLists = new String[][] { new String[] { NfcA.class.getName() } };

}

/** Re-enable the tag dispatch if the app is in the foreground */
@Override
public void onResume() {
super.onResume();
if (mNfcAdapter != null) mNfcAdapter.enableForegroundDispatch(this, pendingIntent, null, mTechLists);
}

/** Disable the tag dispatch when the app is no longer in the foreground */
@Override
public void onPause() {
super.onPause();
if (mNfcAdapter != null) mNfcAdapter.disableForegroundDispatch(this);
}

/** A tag has been discovered */
@Override
public void onNewIntent(Intent intent){

// get the tag object for the discovered tag
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

// try and get the MifareUltralight instance for this tag
mTag = NfcV.get(tag);

// if null then this wasn't a NfcV tag so wait for next time
if(mTag == null){
dialog_text.append("Not a Nfc V tag\n\r");
}

// Start the tag communications thread
Thread myThread = new Thread(this);
myThread.start();

}
}

// (we could create other threads for other types of tags)
public void run(){
// try to connect to the Nfc V tag
try{

mTag.connect();
}catch(IOException e){
//handle the error here
}

//this will send raw data
//send the values you want in the byte[]
//just add the raw hex values with commas
//pageBuffer is an array that will hold the response
try{
pageBuffer = mTag.transceive(new byte[] {0x11, 0x24, 0x11});
}catch(IOException e){
//handle error here
}
}

关于Android NFC,在onCreate 中做空检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com