我的应用程序在设备启动时启动(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);
}