【发布时间】:2020-03-12 16:19:41
【问题描述】:
所以我编写了一个 NFC 标签来启动我目前正在开发的应用程序。我使用以下服务来做到这一点: https://play.google.com/store/apps/details?id=com.wakdev.wdnfc&hl=en
我想要做的是每当 NFC 标签打开我的应用程序时从一个活动切换到另一个活动。
在我的 AndroidManifest.xml 的清单标签下,我有:
<uses-permission android:name="android.permission.NFC" />
<uses-sdk android:minSdkVersion="10"/>
<uses-feature android:name="android.hardware.nfc" android:required="true" />
我的 MainActivity 看起来像这样:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
由于NFC标签先打开MainActivity,我想看看它是否被NFC打开了。如果有,请切换到另一个活动。
问题是getIntent().getAction() 总是返回android.intent.action.MAIN,而我期待android.nfc.action.NDEF_DISCOVERED。
目前我正在使用以下代码在onResume() 方法下执行此检查(基本上是调试):
@Override
protected void onResume() {
super.onResume();
System.out.println(getIntent().getAction());
}
我已经尝试在onCreate() 和onStart() 方法下执行此检查。他们都返回android.intent.action.MAIN 结果,而我期望android.nfc.action.NDEF_DISCOVERED。
我是 Android 开发的新手,我只是想为一个小型原型制作这项工作。如果你们能帮助我,将不胜感激!
编辑:我搞定了!我对这个问题进行了很多研究,我相信我的 NFC 标签需要一些额外的文本/纯文本类型的数据(我之前也没有指定这个 mimeType,所以它似乎是强制性的)。我还在尝试调试应用程序时将 NDEF_DISCOVERED 置于 LAUNCHER 类别下,然后将其更改回 DEFAULT。我终于得到了我想要的结果!
【问题讨论】: