我有3个与devices不同的NFC。在其中两个NfcAdapter.getDefaultAdapter(this)上返回应有的内容,但在第三个设备上返回null。在第三台设备上安装了应用程序(不是我的),可以与NFC cards正常工作。第三个设备是SUNMI P1N-G。有任何想法吗?

主要活动:

package com.test.nfctest;

import androidx.appcompat.app.AppCompatActivity;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private NfcAdapter nfcAdapter;
    TextView text1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text1 = (TextView) findViewById(R.id.text1);
        nfcAdapter = NfcAdapter.getDefaultAdapter(this);
        if (nfcAdapter==null) {
            text1.setText("no nfc");
        } else {
            text1.setText("NFC");
        }

    }
}


Android清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.nfctest">
    <uses-permission android:name="android.permission.NFC"/>
    <uses-feature android:name="android.hardware.nfc" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

最佳答案

获得空适配器有几个原因。
http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/nfc/NfcAdapter.java#494

根据NfcManager中的注释,有两种方法可以获取NFC适配器:


将{@link android.content.Context#getSystemService(java.lang.String)}与{@link Context#NFC_SERVICE}结合使用来创建{@link NfcManager},然后调用{@link #getDefaultAdapter}以获取{@link NfcAdapter}。
NfcManager manager = (NfcManager) getSystemService(Context.NFC_SERVICE);NfcAdapter adapter = manager.getDefaultAdapter();
您可以只调用静态助手{@link NfcAdapter#getDefaultAdapter(android.content.Context)}。


您可以尝试上述替代方法#1。

关于java - NfcAdapter.getDefaultAdapter返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57901595/

10-13 02:27