Android:如何通过在运行活动中调用onResume中的getIntent()来获取NFC触发的最新意图?

时间:2013-04-20 11:43:07

标签: android android-intent android-activity nfc

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

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

但是,当检测到代码时,系统会调用 onResume() onNewIntent() 永远不会被称为。 onResume 中的 getIntent() 将始终返回操作MAIN 的意图,这是首次启动 MainActivity 时使用的原始意图。

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

我有以下代码:(scala,只读它为java)

onNewIntent of MainActivity

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
      ... }

的Manifest.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>

0 个答案:

没有答案