如何在 android 中进行不刷新的 NFC 扫描?

How to NFC scan without refresh in android?

我正在尝试在 android 中添加 NFC 标签。 我的 activity 有一个 webview 及其在 onCreate() 中的集合 url。 NFC打标签时,NDEF信息可以正常获取,但是页面地址没有维护

我该如何解决?

@Override
public void onCreate(Bundle savedInstanceBundle){
    super.onCreate(savedInstanceBundle);
    setContentView(R.layout.activity_test);
    this.webview = findViewbyId(R.id.webview);
    this.webview.loadUrl("https://www.abcblarblar.com/");
    this.nfcAdapter = NfcAdapter.getDefaultAdapter(this);
}

@Override
public void onResume(){
    super.onResume();

    Intent intent = getIntent();

    if (NfcAdapter.ACTION_TAG_DISCOVERED == intent.getAction()) {
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        ...
    } 
}

manifest.xml

<activity
        android:name="com.xxx.xxx.xxx.NFCActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustResize" >
        <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

我猜(因为您没有显示有关如何读取 NFC 标签的代码)您正在使用 enableForegroundDispatch ?

此方法会在 Android OS 读取 NFC 卡时暂停您的应用程序。

如果这是原因,有两种可能的解决方案:-

1) 确保您的应用程序处理暂停并保存它的 InstanceState(因为它有可能被终止并重新启动)或者您正在 onResume 中执行导致此问题的操作。

2) 使用 enableReaderMode https://developer.android.com/reference/android/nfc/NfcAdapter#enableReaderMode(android.app.Activity,%20android.nfc.NfcAdapter.ReaderCallback,%20int,%20android.os.Bundle) 读取卡,因为通过这种读取 NFC 卡的方式,您的应用程序不会暂停,而是在您的应用程序的单独线程中创建回调