有没有办法在运行时检查设备是否有NFC读卡器?我的应用程序使用NFC执行任务,但如果没有阅读器,则可以使用按钮执行相同的任务.
Sai*_*ate 29
希望这适合你
NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
NfcAdapter adapter = manager.getDefaultAdapter();
if (adapter != null && adapter.isEnabled()) {
//Yes NFC available
}else{
//Your device doesn't support NFC
}
Run Code Online (Sandbox Code Playgroud)
检查Android设备是否具有NFC功能的最简单方法是检查系统功能PackageManager.FEATURE_NFC("android.hardware.nfc"):
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_NFC)) {
// device has NFC functionality
}
Run Code Online (Sandbox Code Playgroud)
但是,有些设备(至少有一个索尼的第一款Android NFC智能手机有这个问题)没有正确报告FEATURE_NFC.(那些不允许您通过Play商店安装需要NFC功能的应用程序的设备可以检查需要NFC的应用程序.)
因此,更可靠的解决方案是Sainath Patwary karnate描述的解决方案.要检查设备是否具有NFC功能(或者更确切地说,如果设备具有正在运行的NFC服务),您可以使用:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(context);
if (nfcAdapter != null) {
// device has NFC functionality
}
Run Code Online (Sandbox Code Playgroud)
如果你还需要检查用户是否启用NFC在他们的设备上,你可以使用NfcAdapter的isEnabled()方法.但要注意的是,并不总是像Sainath Patwary karnate所描述的那样容易.特别是在Android 4.0.*上,该isEnabled()方法有时会在NFC服务崩溃之前抛出未记录的异常,因此您可能希望捕获这些异常.此外,在Android> = 2.3.4和<4.1(我无法在以后的版本上重现问题,但这并不意味着它不存在!),isEnabled()NFC服务停止或崩溃后的第一次调用总是返回false,因此建议始终忽略第一次调用的结果isEnabled().
if (nfcAdapter != null) {
try {
nfcAdapter.isEnabled();
} catch (Exception e) {}
bool isEnabled = false;
try {
isEnabled = nfcAdapter.isEnabled();
} catch (Exception e) {}
if (isEnabled) {
// NFC functionality is available and enabled
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7960 次 |
| 最近记录: |