我有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/