我正在尝试通过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;
}
当我发送正确的网址时,应用程序正在启动。但是,动作总是为空!!
我没有事件可以实际处理消息......
我做错了什么?
谢谢, 丹尼尔
答案 0 :(得分:0)
您可以在this.handleNfcBeam(intent);
的两行中的每一行上放置一个断点,以查看您的意图来自哪条路线。然后检查意图数据以查看您收到的意图类型。
您的代码是否包含具有正确内容的NDEF消息,与清单中的定义相匹配?定义scheme,host和pathPrefix时,必须满足所有这三个以触发intent。