0

我刚开始使用 NFC 标签进行 Android 应用程序开发。该应用程序包含一个活动,即MainActivity

MainActivity从 NFC 标签中读取数据。我想让它通过在onResume中使用getIntent()从最新检测到的标签中读取来获取最新的意图。我确实覆盖了 onNewIntent(Intent intent)并在其中调用setIntent(intent),并为MainActivity设置了“singleTop” launchMode 。

但是,当检测到标签时,系统将调用onResume(),并且永远不会调用onNewIntent()onResume中的getIntent()将始终返回动作 MAIN的意图,这是第一次启动MainActivity时使用的原始意图。

有没有办法在onResume()中获取包含动作NDEF_DISCOVERED的意图?为什么不调用onNewIntent

我有以下代码:(scala,只是把它读成java)

MainActivity 的 onNewIntent

override def onNewIntent (intent: Intent):Unit = {
  super.onNewIntent(intent)
  setIntent(intent)
}

onResume()

override def onResume () :Unit = {
  super.onResume()
  var action:String = getIntent().getAction() // always get action MAIN
      ... }

清单.xml

    <activity
        android:name="com.test.tagwriter.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <!-- NFC intent filters -->
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />

            <data android:mimeType="application/com.distributed.dmv" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.TECH_DISCOVERED" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED" />
        </intent-filter>

        <meta-data
            android:name="android.nfc.action.TECH_DISCOVERED"
            android:resource="@xml/nfc_tech_filter" />
    </activity>
4

0 回答 0