当应用程序关闭时,Android NFC 总是调用 onCreate

http://img4.mukewang.com/64928dc20001d47e06531157.jpg我制作了检测 nfc 标签的应用程序。一切正常,当我的应用程序关闭并且我用手机扫描 nfc 标签时,它向我显示一个具有 onCreate() 方法的活动,当我再次扫描它的第二次工作时,我不知道我的生命周期是否错误应用程序或者我在代码中遗漏了什么?当我打开应用程序时,扫描正在工作:应用程序关闭时的第一张照片第二张照片:来自第二张照片,但在第二次扫描中它有效

http://img.mukewang.com/64928dd60001e1fb06541108.jpg

这是我的代码


public class NfcActivity extends AppCompatActivity {


    private static final String TAG = "NfcActivity";


    private NfcAdapter mNfcAdapter;

    private TextView mTextView;

    PendingIntent pendingIntent;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_nfc);

        mTextView = findViewById(R.id.tv_nfc_detail);

        mNfcAdapter = NfcAdapter.getDefaultAdapter(getApplicationContext());

        if (mNfcAdapter == null) {

            Toast.makeText(this, "Cet appareil ne supporte pas nfc", Toast.LENGTH_SHORT).show();

            finish();

            return;

        }

        if (!mNfcAdapter.isEnabled()) {

            startActivity(new Intent("android.settings.NFC_SETTINGS"));

            Toast.makeText(this, "Activer nfc", Toast.LENGTH_SHORT).show();

        }


        pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,

            getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

    }


    @Override

    protected void onPause() {

        super.onPause();

        mNfcAdapter.disableForegroundDispatch(this);

    }


    @Override

    protected void onResume() {

        super.onResume();

        pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,

            getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

        IntentFilter[] intentFilters = new IntentFilter[]{};

        mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFilters, null);


    }



动漫人物
浏览 139回答 1
1回答

翻过高山走不出你

您只是在第二次处理意图。添加一个基于您当前onNewIntent()方法的新方法,如下所示:private void onNewNfcTag(Intent intent) {    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())            || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())             || NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {        Tag iTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);        mTextView.setText(TagReader.readTag(iTag, intent));    }}更改您的onNewIntent()名称以调用此新方法:@Overrideprotected void onNewIntent(Intent intent) {    super.onNewIntent(intent);    onNewNfcTag(intent);}onCreate()从intent from调用这个相同的方法getIntent():@Overrideprotected void onCreate(Bundle savedInstanceState) {    // .... your code already here    onNewNfcTag(getIntent());}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java