如何以编程方式检查NFC是否已启用?有没有办法在我的程序中启用设备上的NFC?请帮帮我
答案 0 :(得分:54)
NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
NfcAdapter adapter = manager.getDefaultAdapter();
if (adapter != null && adapter.isEnabled()) {
// adapter exists and is enabled.
}
您无法以编程方式启用NFC。用户必须通过设置或硬件按钮手动完成。
答案 1 :(得分:7)
使用PackageManager
和hasSystemFeature("android.hardware.nfc")
,与清单中应有的<uses-feature android:name="android.hardware.nfc" android:required="false" />
元素相匹配。
从2.3.3开始,您还可以使用NfcAdapter.getDefaultAdapter()
获取适配器(如果可用)并调用其isEnabled()
方法来检查NFC当前是否已打开。
答案 2 :(得分:7)
我可能会有点迟到,但我已经实施了一个'完整'example并检测到了
我还添加了一个使用
的相应Beam examplenfcAdapter.isNdefPushEnabled()
在以后的Android版本中引入的方法来检测光束状态,如2)和3)。
答案 3 :(得分:1)
只需使用以下代码即可完成此操作:
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);
答案 4 :(得分:-1)
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext());
try {
if (mNfcAdapter != null) {
result = true;
}
}
我们可以使用NfcAdapter验证上下文。