Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查android中是否启用了NFC?_Android_Nfc - Fatal编程技术网

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

如何检查android中是否启用了NFC?,android,nfc,Android,Nfc,如何检查NFC是否以编程方式启用?有没有办法通过我的程序在设备上启用NFC?请帮助我使用PackageManager和hasSystemFeature(“android.hardware.nfc”),与清单中的元素相匹配 从2.3.3开始,您还可以使用NfcAdapter.getDefaultAdapter()获取适配器(如果可用),并调用其isEnabled()方法检查NFC当前是否已打开 NfcManager manager = (NfcManager) context.getSystemS

如何检查NFC是否以编程方式启用?有没有办法通过我的程序在设备上启用NFC?请帮助我使用
PackageManager
hasSystemFeature(“android.hardware.nfc”)
,与清单中的
元素相匹配

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

NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
NfcAdapter adapter = manager.getDefaultAdapter();
if (adapter != null && adapter.isEnabled()) {
    // adapter exists and is enabled.
}

不能以编程方式启用NFC。用户必须通过设置或硬件按钮手动执行此操作。

我在这里可能会晚一点,但我已经实现了一个“完整”功能,可以检测到

  • NFC能力(硬件),以及
  • 初始NFC状态(在设置中启用或禁用),以及
  • 状态的变化
  • 我还添加了一个相应的梁,它使用

    nfcAdapter.isNdefPushEnabled()
    
    在以后的Android版本中引入了一种检测光束状态的方法,如2)和3)


    我们可以在上下文中使用NfcAdapter进行验证。

    只需使用以下代码即可完成此操作:

    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,即使在使用您的应用程序时也是如此

    资料来源:

    虽然您自己无法通过编程启用NFC,但您可以通过按钮打开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);
    

    因此,如果返回值为FALSE,则表示设备不具备NFC功能,那么@userSeven7s是否为true?这是不正确的。如果适配器为空,则设备没有NFC。谷歌代码已经关闭,你可以更新你的答案吗?Android Beam不再受支持。
    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);