设备启动时如何阻止NfcAdapter.ACTION_NDEF_DISCOVERED变为真?

时间:2015-03-19 19:59:59

标签: java android nfc android-5.0-lollipop

我的应用程序在设备启动时启动(Nexus 7)。当我的设备启动时if(action.equals(NfcAdapter.ACTION_NDEF_DISCOVERED))变为真。然后if内的代码崩溃,因为意图不是真正的ACTION_NDEF_DISCOVERED而是引导。

我可以放try catch,然后就不会崩溃。然而,NFC不会起作用。要使NFC工作,必须关闭并重新打开应用程序。

有没有办法检查if(action.equals(NfcAdapter.ACTION_NDEF_DISCOVERED))但忽略了启动?这真的很烦人,因为if正在检查NFC无法启动。

@Override
public void onResume() 
{
    super.onResume();

    // NFC code.
    Intent intent = getIntent();
    String action = intent.getAction();

    PendingIntent pi = this.createPendingResult(0x00A, new Intent(), 0);
    nfcAdapter.enableForegroundDispatch(this, pi, null, null);

    try
    {
        // NFC transfer. Receiving message here.
        if(action != null && action.equals(NfcAdapter.ACTION_NDEF_DISCOVERED))
        {
            Parcelable[] parcelables = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
            NdefMessage inNdefMessage = (NdefMessage) parcelables[0];
            NdefRecord[] inNdefRecords = inNdefMessage.getRecords();
            NdefRecord NdefRecord_0 = inNdefRecords[0];
            String inMsg = new String(NdefRecord_0.getPayload());

            Toast.makeText(getApplicationContext(), "Toasty: "+inMsg + action.toString(), Toast.LENGTH_LONG).show();

            textInfo.setText(inMsg);
        }
    }
    catch(Exception e)
    {
        Log.e("NFC", e.getMessage());
    }
}

这是检查BOOTING的代码。

public class BootManager extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
        {
            Intent i = new Intent(context, Login_Activity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(i);
        }
    }
}

Login_Activity这会改变intent吗?

@Override
protected void onNewIntent(Intent intent)
{
    setIntent(intent);
}

0 个答案:

没有答案