如何将NFC标签上的AAR重定向到新的应用程序ID?

时间:2018-03-23 09:35:19

标签: android nfc intentfilter ndef android-applicationrecord

我有一个有两条记录的NDEF NFC标签:

  • 第一个包含我的网站网址。
  • 第二个是AAR,其应用程序ID是我以前的应用程序。

到目前为止,当发现NFC标签时,旧应用程序正常启动。

但我想创建一个新的应用程序,它将处理这些NFC标签而不是旧标签。

我已在清单中添加:

<android:name=".splash.SplashActivity"
    android:screenOrientation="portrait"
    android:stateNotNeeded="true"
    android:theme="@style/SplashTheme">

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

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:host="http://website.com" android:scheme="http" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="application/OLDAPPLICATIONID" />
    </intent-filter>
</activity>

我已经在我的手机上安装了新应用程序但是当我点击NFC标签时,它会打开Play商店并将我重定向到旧应用程序。

是否可以创建在发现包含其他应用程序ID的标记时触发的NFC过滤器?

1 个答案:

答案 0 :(得分:1)

不,用这个标签启动你的新应用是不可能的。 Android应用程序记录(AAR)的整个想法是为了防止这种情况(参见NFC Basics):

  

[... AAR]可以更加确定您的应用程序在扫描NFC标签时启动。 [...] 如果您希望阻止其他应用程序针对相同的意图进行过滤并可能处理您已部署的特定标记,则AAR非常有用。

因此,如果您想使用NFC标签启动您的应用程序,唯一的选择是替换标签上的数据(或整个标签,以防它被写入锁定)。

但是,如果您只想在(新)应用程序已在前台打开时读取标记,则可以使用前台调度系统或读取器模式来覆盖该行为并强制Android将标记发现事件分派给你的(新)应用程序。请参阅Using the Foreground Dispatch System