【发布时间】:2011-10-01 06:42:09
【问题描述】:
如何以编程方式检查 NFC 是否已启用?有什么方法可以通过我的程序在设备上启用 NFC?请帮帮我
【问题讨论】:
如何以编程方式检查 NFC 是否已启用?有什么方法可以通过我的程序在设备上启用 NFC?请帮帮我
【问题讨论】:
这可以简单地使用以下代码来完成:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
// NFC is not available for device
} else if (!nfcAdapter.isEnabled()) {
// NFC is available for device but not enabled
} else {
// NFC is enabled
}
请记住,即使在使用您的应用时,用户也可以关闭 NFC。
来源:https://developer.android.com/guide/topics/connectivity/nfc/nfc#manifest
虽然您无法自行以编程方式启用 NFC,但您可以要求用户通过按钮打开 NFC 设置来启用它,如下所示:
Intent intent
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
intent = new Intent(Settings.ACTION_NFC_SETTINGS);
} else {
Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
}
startActivity(intent);
【讨论】:
NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
NfcAdapter adapter = manager.getDefaultAdapter();
if (adapter != null && adapter.isEnabled()) {
// adapter exists and is enabled.
}
您无法以编程方式启用 NFC。用户必须通过设置或硬件按钮手动完成。
【讨论】:
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext());
try {
if (mNfcAdapter != null) {
result = true;
}
}
我们可以使用带有上下文的 NfcAdapter 进行验证。
【讨论】:
使用PackageManager 和hasSystemFeature("android.hardware.nfc"),匹配您应该在清单中包含的<uses-feature android:name="android.hardware.nfc" android:required="false" /> 元素。
从 2.3.3 开始,您还可以使用 NfcAdapter.getDefaultAdapter() 获取适配器(如果可用)并调用其 isEnabled() 方法来检查当前是否打开了 NFC。
【讨论】: