我正在尝试通过 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;
}
当我发送正确的 URL 时,应用程序正在启动。但是,动作总是无效的!
我还没有达到可以实际处理消息的地步......
我究竟做错了什么?
谢谢,丹尼尔