如何检查Android中是否启用了NFC?

时间:2011-10-01 06:42:09

标签: android nfc

如何以编程方式检查NFC是否已启用?有没有办法在我的程序中启用设备上的NFC?请帮帮我

5 个答案:

答案 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)

使用PackageManagerhasSystemFeature("android.hardware.nfc"),与清单中应有的<uses-feature android:name="android.hardware.nfc" android:required="false" />元素相匹配。

从2.3.3开始,您还可以使用NfcAdapter.getDefaultAdapter()获取适配器(如果可用)并调用其isEnabled()方法来检查NFC当前是否已打开。

答案 2 :(得分:7)

我可能会有点迟到,但我已经实施了一个'完整'example并检测到了

  1. NFC功能(硬件)和
  2. 初始NFC状态(在设置中启用或禁用)和
  3. 州的变化
  4. 我还添加了一个使用

    的相应Beam example
    nfcAdapter.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验证上下文。