Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当设备启动时,如何阻止NfcAdapter.ACTION\u NDEF\u发现变为真?_Java_Android_Nfc_Android 5.0 Lollipop - Fatal编程技术网

Java 当设备启动时,如何阻止NfcAdapter.ACTION\u NDEF\u发现变为真?

Java 当设备启动时,如何阻止NfcAdapter.ACTION\u NDEF\u发现变为真?,java,android,nfc,android-5.0-lollipop,Java,Android,Nfc,Android 5.0 Lollipop,我的应用程序在设备启动时启动(Nexus 7)。当我的设备启动时,if(action.equals(NfcAdapter.action\u NDEF\u DISCOVERED))变为true。然后,if中的代码崩溃,因为其目的不是真正的操作,而是启动 我可以放一个试试catch,然后它就不会崩溃了。然而,NFC将不起作用。要使NFC正常工作,必须关闭并重新打开应用程序 是否有方法检查if(action.equals(NfcAdapter.action\u NDEF\u DISCOVERED))但

我的应用程序在设备启动时启动(Nexus 7)。当我的设备启动时,
if(action.equals(NfcAdapter.action\u NDEF\u DISCOVERED))
变为true。然后,
if
中的代码崩溃,因为其目的不是真正的
操作,而是启动

我可以放一个
试试catch
,然后它就不会崩溃了。然而,NFC将不起作用。要使NFC正常工作,必须关闭并重新打开应用程序

是否有方法检查
if(action.equals(NfcAdapter.action\u NDEF\u 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());
    }
}

这是检查引导的代码

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);
        }
    }
}

登录\u活动中,这是否会改变
意图?

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

您是如何注册应用程序以在启动时启动的?您是否为启动操作注册了广播接收器,然后启动活动?@MichaelRoland是的,我注册了。然后请也显示该代码。@MichaelRoland我已经发布了。如果您有任何想法,请告诉我,您之前在相关问题中的回答非常有用。上面的
onResume()
code是否来自
Login\u活动
?您是否在
onCreate
onStart
中修改启动意图(例如使用
setIntent()
)?