Android NFC类型默认应用程序

Android NFC类型默认应用程序,android,android-intent,nfc,intentfilter,ndef,Android,Android Intent,Nfc,Intentfilter,Ndef,我刚开始在NFC工作。扫描NFC标签时,默认情况下会打开我的应用程序,但我有两个问题: 由于某些原因,我无法在launcher应用程序浏览器中看到我的应用程序 我如何定义仅当NFC为URL类型时才打开应用程序 第一个问题(应用程序未在launcher中显示)是由于多个筛选条件在一个部分中组合的方式造成的(请参阅)。您可以通过将目标筛选拆分为单独的部分来轻松克服这一问题: <intent-filter> <action android:name="android

我刚开始在NFC工作。扫描NFC标签时,默认情况下会打开我的应用程序,但我有两个问题:

  • 由于某些原因,我无法在launcher应用程序浏览器中看到我的应用程序

  • 我如何定义仅当NFC为URL类型时才打开应用程序

    
    

  • 第一个问题(应用程序未在launcher中显示)是由于多个筛选条件在一个
    部分中组合的方式造成的(请参阅)。您可以通过将目标筛选拆分为单独的
    部分来轻松克服这一问题:

    <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:mimeType="text/plain" />
    </intent-filter>
    
    
    ,您将使用以下意图过滤器:

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

  • 非常感谢您提供的详细答案!如果我只想在特定文本上打开应用程序,您能给我一个例子吗?@Dim
    只允许对数据类型进行过滤,而不允许对特定数据负载(例如文本值)进行过滤。您可以使用NFC论坛外部类型(根据类型名称进行过滤)、URI记录(根据URL前缀过滤),或自定义MIME类型记录。
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="https" android:host="stackoverflow.com" />
    </intent-filter>