如何在检测到NFC标签时关闭我的应用程序

时间:2013-12-06 02:55:27

标签: java android nfc alarmmanager alarm

我正在开发一个闹钟应用程序,只有在应用程序检测到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());

1 个答案:

答案 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的字符串常量。所以它永远不会是空的。