Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NDEF Android应用程序记录(AAR)获取NFC标记_Android_Nfc_Intentfilter_Ndef_Android Applicationrecord - Fatal编程技术网

使用NDEF Android应用程序记录(AAR)获取NFC标记

使用NDEF Android应用程序记录(AAR)获取NFC标记,android,nfc,intentfilter,ndef,android-applicationrecord,Android,Nfc,Intentfilter,Ndef,Android Applicationrecord,我正在处理一个NFC应用程序。为了启动我的应用程序,我使用了一个NDEF标签,里面有一个AAR NDEF记录 这个很好用。但现在我想直接用应用程序读取标签内容。我该怎么做 当我从手机上取下标签并再次触摸它时,它已经起作用了,但我想取消这一步骤 舱单: 我只想让NDEF_知道我的意图。但我总是通过调试器获得action.MAIN/category.LAUNCHER意图 任何帮助都将不胜感激。我的工作基于此:我不知道这是否是正确答案,但我找到了一个解决方案: <activity

我正在处理一个NFC应用程序。为了启动我的应用程序,我使用了一个NDEF标签,里面有一个AAR NDEF记录

这个很好用。但现在我想直接用应用程序读取标签内容。我该怎么做

当我从手机上取下标签并再次触摸它时,它已经起作用了,但我想取消这一步骤

舱单:

我只想让NDEF_知道我的意图。但我总是通过调试器获得action.MAIN/category.LAUNCHER意图


任何帮助都将不胜感激。我的工作基于此:

我不知道这是否是正确答案,但我找到了一个解决方案:

        <activity
            android:name=".NFCScanActivity"
            android:label="@string/app_name" >
            <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>
    </application>

</manifest>

如果希望应用程序由标记启动,并希望接收解析的NDEF消息,则标记应包含以下内容:

要作为NDEF消息的第一条记录进行筛选的NDEF记录,您只能为NFC标记上的第一条NDEF记录创建意图过滤器。给定,在您的情况下,这将是一个文本记录或MIME类型记录,其中包含MIME类型Text/plain。但是,您可能需要考虑使用NFC论坛外部类型记录与您的自定义应用程序特定类型名称,而视此将允许您的应用程序更好地区分与其他应用程序使用的标签。仅当文本记录包含人类可读的非解释文本时,才应使用该文本记录。 如果你想确保只有你的应用程序是用标签启动的,并且如果用户没有安装应用程序,你的应用程序的Play Store页面会自动打开,那么你也应该使用Android应用程序记录AAR。此记录应为NDEF消息中的最后一条记录。请注意,无论NDEF消息中的位置如何,AAR都将得到遵守,但将其用作第一条记录将导致中描述的问题。 一旦准备好包含适当NDEF消息的标记,就必须为应接收标记发现事件和触发该事件的NDEF消息的活动创建适当的意图过滤器:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>
或者,如果您使用自定义NFC论坛外部类型:

<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="/yourdomain.com:yourtypename"/>
</intent-filter>

如果您的应用程序没有与标记上NDEF消息的第一条记录相匹配的NDEFèU查找到的意图过滤器,并且您的标记包含Android应用程序记录,则清单中声明的第一个活动将启动,该活动包含Android.intent.action.MAIN和Android.intent.category.LAUNCHER的意图过滤器。因此,由于该活动未声明预期NFC意图,因此将传递不包含NDEF消息/标记句柄的android.intent.action.MAIN。

非常感谢您提供了这一信息丰富的答案!现在我可以更清楚地看到关于这个主题的一切:如果接收设备没有安装应用程序,有没有办法让有效负载恢复?我希望在他们安装之后,他们仍能以某种方式达到目的。@hooby3dfx你是说在同一个水龙头上?例如,NFC交互->游戏商店->用户安装应用->用户手动打开应用->接收数据有效载荷?准确地说-这样,如果接收者还没有应用,在他们安装应用后,发送者不需要点击again@hooby3dfx不,Android不支持这个。
<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="/yourdomain.com:yourtypename"/>
</intent-filter>