nfc读卡java开发,Android实现读取NFC卡卡号示例
时间: 2023-12-27 08:21:17 浏览: 142
好的,以下是实现读取NFC卡卡号的示例代码:
首先,在 AndroidManifest.xml 中添加以下权限:
```xml
<uses-permission android:name="android.permission.NFC" />
```
然后,在你的 Activity 中添加以下代码:
```java
public class MainActivity extends AppCompatActivity {
private NfcAdapter nfcAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
Toast.makeText(this, "设备不支持NFC功能!", Toast.LENGTH_SHORT).show();
finish();
return;
}
if (!nfcAdapter.isEnabled()) {
Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show();
finish();
return;
}
}
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
filter.addDataType("*/*");
} catch (IntentFilter.MalformedMimeTypeException e) {
e.printStackTrace();
}
Intent intent = new Intent(this, getClass());
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, intent, 0);
nfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{filter}, null);
}
@Override
protected void onPause() {
super.onPause();
nfcAdapter.disableForegroundDispatch(this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String cardId = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID));
// 这里的 cardId 就是读取到的卡号,可以进行相应的操作
Toast.makeText(this, "卡号:" + cardId, Toast.LENGTH_SHORT).show();
}
/**
* 将 byte 数组转换为十六进制字符串
*
* @param byteArray byte 数组
* @return 十六进制字符串
*/
private String ByteArrayToHexString(byte[] byteArray) {
StringBuilder result = new StringBuilder();
for (byte b : byteArray) {
result.append(String.format("%02X", b));
}
return result.toString();
}
}
```
以上代码的作用是:
1. 检查设备是否支持 NFC 功能,以及 NFC 功能是否已启用。
2. 注册一个 IntentFilter,用于指定当读取到 NFC 卡时,应该启动哪个 Activity。
3. 当读取到 NFC 卡时,会触发 onNewIntent() 方法,从 Intent 中取出卡号信息,并进行相应的操作。
希望这个示例能对你有所帮助!
阅读全文