Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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/7/user-interface/2.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
android.nfc.action.TECH_的捕获和预处理_Android_Android Intent_Nfc - Fatal编程技术网

android.nfc.action.TECH_的捕获和预处理

android.nfc.action.TECH_的捕获和预处理,android,android-intent,nfc,Android,Android Intent,Nfc,我的活动已注册到android.nfc.action.TECH\u DISCOVERED action,一般来说效果很好: <activity android:name="MyActivityToPpocessNfcTag" android:label="@string/app_name"> <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERE

我的活动已注册到android.nfc.action.TECH\u DISCOVERED action,一般来说效果很好:

<activity android:name="MyActivityToPpocessNfcTag"
    android:label="@string/app_name">
    <intent-filter>
         <action android:name="android.nfc.action.TECH_DISCOVERED" />
         <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
               android:resource="@xml/filter_nfc"
    />
</activity>
问题在于android.nfc.action.TECH_发现的动作的本质。每次我扫描标签时,我感兴趣的是,系统会提示选择应用程序。一些预安装应用程序也会捕获类似类型的nfc标签,以显示一些基本信息。系统不提供记忆选择功能

我理解为什么会这样:有许多不同种类的nfc标签可以调用TECH_发现的动作。然而,该操作并没有提供足够的信息来有效地找出如何为每个标签过滤应用程序,从而导致用户不得不做出选择

现在,毫无疑问,我的应用程序可以确定它可以处理哪个标记,所以在系统提示选择应用程序之前,是否有一种方法可以捕获此意图,以便我可以采取相应的操作。 我只是想摆脱这个系统消息选择应用程序,我不想消费所有的nfc标签


请注意,android.nfc.action.TECHêu DISCOVERED是android完成的第二级nfc处理,第一级是android.nfc.action.NDEFêu DISCOVERED,它具有uri和mimeType数据,因此android可以有效地选择要运行的应用程序。我正在处理的NFC标签正在调用TECH_DISCOVERED action,而不是NDEF_DISCOVERED。

在运行ICS的Nexus S上,我甚至没有选择应用程序的选择权,我有一些。默认情况下,它正在打开标签应用程序,这是一个内置的应用程序。我只能通过先启动它们然后扫描标记或禁用标记应用程序来使用其他标记。例如,我刚刚编写了一个快速应用程序,它什么也不做,只是在清单中有nfc意图过滤器。当我禁用标记应用程序时,我只能在标记扫描时访问它。请记住,Android有三个NFC处理阶段:当系统识别所有数据时发现操作,并且mimeData URI可用,因此应用程序过滤开始,当nfc技术已知,但标签内容未知或未被系统处理时发现的操作\u技术\u这没有URI或mimeType,因此无法预选应用程序。在我的案例中,操作\u标签\u是在仅读取标签且未识别任何其他内容时发现的。显然,您有许多注册了ACTION\u NDEF\u Discovery的应用程序,没有一个是注册了ACTION\u TECH\u Discovery的系统应用程序。您的应用程序将根据从系统接收这些操作的时间采取操作。我之前写了一个快速应用程序,虽然我不得不禁用标记应用程序,但我还是能够收到这些操作。你在构建什么版本?我在Android 4.0.3 API级别15的基础上构建。更具体地说,我正在尝试实现简单的安全配对,一切正常,但我希望删除可能的应用程序选择。禁用标签应用程序不是一个解决方案。其目的是将用户交互减少到最低程度,因此,如果扫描了know device,则无需任何其他用户点击即可连接/断开蓝牙设备。只有当设备必须配对时,UI才会要求确认。