我正在开发一个闹钟应用程序,只有在应用程序检测到NFC标签时才允许您关闭闹钟。我使用的标签没有写入任何内容我相信(当手机检测到NFC标签时,它会显示“空标签”)。这是我的代码,想知道你是否可以提供帮助! Android Manifest:
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
</intent-filter>
代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Wake Log");
mWakeLock.acquire();
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.normal_alarm);
if (NfcAdapter.ACTION_TAG_DISCOVERED.isEmpty() == false){
NewAlarm.time = "";
NewAlarm.date = "";
mMediaPlayer.stop();
finish();
}
playSound(this, getAlarmUri());
答案 0 :(得分:0)
在应用程序清单中使用TAG_DISCOVERED
意图时,意味着只有在没有其他应用程序注册更合适的NFC意图时才会触发回退机制。因此,除非您针对Android 2.3(其中TAG_DISCOVERED
是主要的NFC意图使用)进行开发,否则您应该避免将其用作唯一与NFC相关的意图过滤器。
但是,在您的情况下(应用程序已经按照我的理解打开),您可以完全跳过清单中的意图过滤。当您的应用程序位于前台时,您应该注册foreground tag dispatch system。
另请注意
if (NfcAdapter.ACTION_TAG_DISCOVERED.isEmpty() == false){
没有意义,因为NfcAdapter.ACTION_TAG_DISCOVERED
是一个始终包含值android.nfc.action.TAG_DISCOVERED
的字符串常量。所以它永远不会是空的。