如何使用url为读取nfc标记指定mimeType

时间:2011-08-18 21:21:16

标签: android mime-types nfc

我有一个Uri NFC TAG:pay://myName/12345

在我的意图过滤器中我有:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <data android:mimeType="text/plain" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

如何指定MIME类型的数据以启动我的应用程序而没有应用程序选择器?

1 个答案:

答案 0 :(得分:11)

嗯,理想情况下,你不会发明像这样的非标准方案。最好使用指向网页的HTTP URL创建标记,其中您的Android活动也会处理该网址 - Android活动的<intent-filter>将更具体,因此它将优先于安装。这样,标签可以用于更多设备。

话虽如此,无论URL语法如何,都要使用适当的<data>元素。不使用android:mimeType,而是使用android:scheme和其他属性。

Here is a sample project允许用户将URL写入符合NDEF的标记(通过浏览器中的“共享选项”菜单项共享)。如果您为该标记写了一个特定的URL,那么该应用程序还有一个活动,该活动将在扫描该标记时启动,由此清单条目提供:

    <activity android:name="URLHandler"
              android:label="@string/app_name">
        <intent-filter android:label="@string/app_name">
          <action android:name="android.nfc.action.NDEF_DISCOVERED" />
          <data android:scheme="http"
                android:host="commonsware.com"
                android:path="/nfctest"
          />
          <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>