【问题标题】:NFC read TAGS in differents Activities automaticly without ask where process the TAGSNFC 自动读取不同活动中的 TAGS,无需询问在哪里处理 TAGS
【发布时间】:2014-06-23 11:01:19
【问题描述】:

我想在不同的 Activity 中读取任何 TAG 而不会出现在我的显示中,什么 Activity 最适合读取此标签?我认为这应该是自动的。 我的代码清单是这样的:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.iprocuratio.strim.LoginActivity"
        android:label="@string/title_activity_login" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.iprocuratio.strim.TemperatureActivity"
        android:label="@string/title_activity_temperature" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.ConstantsActivity"
        android:label="@string/title_activity_constants" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.FC"
        android:label="@string/title_activity_fc" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.FR"
        android:label="@string/title_activity_fr" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.SatO2"
        android:label="@string/title_activity_sat_o2" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.PrescriptionsActivity"
        android:label="@string/title_activity_prescriptions">
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.iprocuratio.strim.MedicamentosActivity"
        android:label="@string/title_activity_medicamentos" >
    </activity>
    <activity
        android:name="com.iprocuratio.strim.Identificacion"
        android:label="@string/title_activity_identificacion" >
        <intent-filter >
            <action android:name="com.google.zxing.client.android.SCAN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.iprocuratio.strim.Pantallaleer"
        android:label="@string/title_activity_pantallaleer" >
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.iprocuratio.strim.IdentificacionFinal"
        android:label="@string/title_activity_identificacion_final" >

    </activity>
</application>

我在两个活动中实现了读取 TAG: 处方活动和 Pantalaleer。 例如,当我想在 PrescriptionsActivity 中读取 TAG 时,总是会出现下一张图片:

我希望当我阅读 TAG 时它不会显示此窗口,它会自动选择正确的活动。 有谁知道,我该怎么办? 我的代码正确吗?

告诉我。谢谢。

问候。

【问题讨论】:

    标签: android android-activity tags android-manifest nfc


    【解决方案1】:

    这两个活动都对同一意图敏感(即,两个活动都在包含文本记录(或文本/纯文本类型的 MIME 类型记录)的标签上触发:

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

    如果两者都包含相同的数据类型并且两个过滤器都匹配相同的数据类型,那么 Android 无法判断哪种活动更适合特定标签的需求。因此,Android 显示意图选择器让用户选择。

    如果您想避免使用意图选择器,您应该为每个活动使用不同的数据类型(而不是使用非常不特定的文本/纯文本数据类型)。例如,如果一个标签应该启动 PrescriptionsActivity,您可以将以下 NDEF 消息写入标签:

    +-------------------------------------------------+
    | EXT:iprocuratio.com:prescriptions | <your data> |
    +-------------------------------------------------+
    

    您可以使用在 Android 上创建此 NDEF 消息

    NdefMessage msg = new NdefMessage(
        NdefRecord.createExternal("iprocuratio.com", "prescriptions", yourData),
    );
    

    PrescriptionsActivity 的意图过滤器可能如下所示:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="vnd.android.nfc"
              android:host="ext"
              android:pathPrefix="/iprocuratio.com:prescriptions"/>
    </intent-filter>
    

    同样,对于Pantallaleer 活动,您可以使用:

    +-------------------------------------------------+
    | EXT:iprocuratio.com:pantallaleer | <your data> |
    +-------------------------------------------------+
    

    您可以使用在 Android 上创建此 NDEF 消息

    NdefMessage msg = new NdefMessage(
        NdefRecord.createExternal("iprocuratio.com", "pantallaleer", yourData),
    );
    

    Pantallaleer 活动的意图过滤器可能如下所示:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="vnd.android.nfc"
              android:host="ext"
              android:pathPrefix="/iprocuratio.com:pantallaleer"/>
    </intent-filter>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多