Android NFC:App已推出,但行动不是故意的

时间:2013-04-17 01:25:34

标签: android nfc

我正在尝试通过NFC处理特定域的URI。

清单有:

<activity android:name="HistoryActivity"
        android:theme="@android:style/Theme.Light.NoTitleBar"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https"
                android:host="mydomain.me"
                android:pathPrefix="/x" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http"
                android:host="mydomain.me"
                android:pathPrefix="/x" />
        </intent-filter>
    </activity>

onResume和onNewIntent看起来像:

@Override
protected void onResume() {
    super.onResume();
    Intent intent = new Intent(this, this.getClass());
    //intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    this.handleNfcBeam(intent);
}

@Override
protected void onNewIntent(Intent intent) 
{
    setIntent(intent);

    this.handleNfcBeam(intent);
}

和handleNfcBeam看起来像:

protected boolean handleNfcBeam(Intent intent)
{
    String action = intent.getAction();

    if (action != null &&
            action.equalsIgnoreCase("android.nfc.action.NDEF_DISCOVERED"))
    {

        return true; // todo: process URL
    }

    return false;
}

当我发送正确的网址时,应用程序正在启动。但是,动作总是为空!!

我没有事件可以实际处理消息......

我做错了什么?

谢谢, 丹尼尔

1 个答案:

答案 0 :(得分:0)

您可以在this.handleNfcBeam(intent);的两行中的每一行上放置一个断点,以查看您的意图来自哪条路线。然后检查意图数据以查看您收到的意图类型。

您的代码是否包含具有正确内容的NDEF消息,与清单中的定义相匹配?定义scheme,host和pathPrefix时,必须满足所有这三个以触发intent。