如何接收android.nfc.action.TAG_LOST意图检测标签删除?

时间:2017-02-26 14:37:25

标签: android android-intent tags nfc

根据AOSP source code<?php $user = "root"; $pass = "<removed for this post>"; $db = new PDO("mysql:host=localhost;dbname=pdo-demo", $user, $pass); $stmt = $db->prepare("INSERT INTO pdo-demo (firstname, lastname, email) value (:firstname, :lastname, :email)"); $stmt->bindParam(':firstname', $firstname); $stmt->bindParam(':lastname', $lastname); $stmt->bindParam(':email', $email); $firstname = "John"; $lastname = "Doe"; $email = "johndoe@nowhere123.com"; $stmt->execute(); $db = null;?> 定义了一个字符串值为NfcAdapter的常量ACTION_TAG_LEFT_FIELD

文件中的Javadoc声明:

  

仅向处理ACTION_TAG_DISCOVERED

的活动广播

Blame表示此声明是在2010年初期NFC实施期间添加的,因此任何支持NFC的Android版本都应该拥有它(除了专门删除它的版本)。

我有一项活动可以收听"android.nfc.action.TAG_LOST"ACTION_NDEF_DISCOVEREDACTION_TECH_DISCOVERED中的任何一项。我试图通过在清单中声明它并注册BroadcastReceiver来听取ACTION_TAG_DISCOVERED,但活动从未收到意图。我尝试了NDEF格式的标记和通用标记(一个触发ACTION_TAG_LEFT_FIELD,另一个触发ACTION_NDEF_DISCOVERED),另外两个设备运行不同版本的Android。

如果重要:应用程序永远不会执行明确的ACTION_TAG_DISCOVERED操作来从标记中读取,但会从Intent附加内容中获取所有标记数据。

有没有人成功收到connect()广播?我做错了什么?

1 个答案:

答案 0 :(得分:2)

此字段确实在#include <pthread.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <memory.h> int gridSize = 12; typedef struct threadParameter { float * grid; int top; int bot; }threadParameter; void* threadFunction( void* args ) { threadParameter *param = (threadParameter*) args; printf("%d, %d", param->bot, param->top); return 0; } int main( int argc, char *argv[] ) { int numProcs = 4; pthread_t * threadsArr = malloc(numProcs * sizeof(pthread_t)); float mainGrid[gridSize][gridSize]; memset( mainGrid, 0, gridSize*gridSize * sizeof(float) ); initializeGrid(1.0, 2.0, 3.0, 4.0, mainGrid); threadParameter t = {&mainGrid[0][0], 0, gridSize}; int ret = pthread_create(&threadsArr[0], 0, threadFunction, (void*)&t); } API中声明:

NfcAdapter

但是,请注意它声明为隐藏(/** * Broadcast to only the activity that handles ACTION_TAG_DISCOVERED * @hide */ public static final String ACTION_TAG_LEFT_FIELD = "android.nfc.action.TAG_LOST"; ),因此它不是任何公共API的一部分,因此,没有记录的使用方法。

事实上,尽管已经在@hide API类中定义了这个,但它并未被Android使用。 Android NFC服务甚至没有尝试发送此意图。因此,您的应用无法接收它。