2017-04-04 36 views
0

有一种方法可以了解应用是否已由NFC标签启动?检查应用是否由NFC标签启动

我已经编写了一个nfc标签来启动我的应用程序,编写应用程序包名(第三个应用程序),我想在这种情况下启动一个特定的片段,我该怎么做?

+0

参见[获取与NDEF Android应用程序记录(AAR)NFC标签(HTTP://计算器.com/q/25504418/2425802) –

+0

@MichaelRoland我的nfc标签只有一个AAR记录,所以肯定会发布我的应用程序。我不想从标签nfc捕获任何其他数据。如何在我的代码中理解该应用是否已由nfc标签启动?谢谢 – Miche

+0

你读过那里的答案(特别是最后一段)吗?另请参阅[本答案](http://stackoverflow.com/a/21186762/2425802)了解如何过滤AAR本身。 –

回答

0

您必须为应用程序的活动添加一个意图过滤器,该过滤器记录要由nfc事件启动的活动。根据MIME类型或技术等,有不同的方式来指定该过滤器。 然后在该活动中,您可以检查onNewIntent()onResume()如果启动该活动的意图是nfc意图。

public void onNewIntent(Intent newIntent) { 
    setIntent(newIntent); 
    // onResume is called afterwards, so we handle intent there 
} 

public void onResume() { 
    Intent intent = getIntent(); 
    if (intent != null && NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { 
     Toast.makeText("NFC!", Toast.LENGTH_LONG).show(); 
     // Here you could start your Fragment 
    } 
} 

请检查你有意向过滤器等选项的官方文档

https://developer.android.com/guide/topics/connectivity/nfc/nfc.html

+0

谢谢。在清单中,我添加了一个意图过滤器,用于过滤纯文本,并向文本添加记录到nfc标签。即使我不需要nfc标签中的文本,这也是我发现正确启动我的应用程序的唯一方法 – Miche

+0

您应该小心,如果应用程序转到后台并在稍后再次到达前台,则意图将会仍然是通过setIntent()设置它的NFC意图。意图中的标签在我认为的那种情况下是不可用的。如果您希望在处理后将setIntent()返回到MAIN启动器,以防止出现类似情况。 – jgriffin

+0

@jgriffin你是对的,在我的实现中,我在onResume()的末尾调用setIntent(null),但这可能不是最好的解决方案。 – Ridcully

相关问题