Android– 收听NFC适配器状态已更改

Android– 收听NFC适配器状态已更改,第1张

概述我正在尝试构建一个使用NFC的应用程序.目标是显示包含按钮链接的DialogFragment以进行设置并手动更改它,并在启用该功能时禁用DialogFragment.问题:如果用户使用下拉通知托盘中的图标启用/禁用NFC,则onPause/onResume不会被调用并完全错过该条件.我确信有一个接收器,我可以注册,

我正在尝试构建一个使用NFC的应用程序.目标是显示包含按钮链接的DialogFragment以进行设置并手动更改它,并在启用该功能时禁用DialogFragment.

问题:如果用户使用下拉通知托盘中的图标启用/禁用NFC,则onPause / onResume不会被调用并完全错过该条件.
我确信有一个接收器,我可以注册,并实时响应.任何想法,想法或参考将不胜感激!

以下代码检查状态是否已启用/禁用.我也在onResume事件中适当地回应它.

    NfcManager manager = (NfcManager) getSystemService(Context.NFC_SERVICE);    NfcAdapter adapter = manager.getDefaultAdapter();    if(adapter != null && adapter.isEnabled()) {        detector = new NfcDetector(this);        detector.setListener(this);        onNfcFeatureFound();    }    else {        onNfcFeatureNotFound();    }

对于看过这篇文章的其他人,下面的代码将直接将用户带入设置以启用/禁用NFC:

startActivity(new Intent(androID.provIDer.Settings.ACTION_NFC_SETTINGS));

解决方法:

以为我应该为寻找同样问题的其他人发布答案,因为我无法轻易找到.

将以下代码添加到您的活动onCreate()方法:

IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);this.registerReceiver(mReceiver, filter);

在您的活动中(或您喜欢的任何其他地方)声明的内部私有类:

private final broadcastReceiver mReceiver = new broadcastReceiver() {    @OverrIDe    public voID onReceive(Context context, Intent intent) {        final String action = intent.getAction();        if (action.equals(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED)) {            final int state = intent.getIntExtra(NfcAdapter.EXTRA_ADAPTER_STATE,                                                 NfcAdapter.STATE_OFF);            switch (state) {            case NfcAdapter.STATE_OFF:                break;            case NfcAdapter.STATE_TURNING_OFF:                break;            case NfcAdapter.STATE_ON:                break;            case NfcAdapter.STATE_TURNING_ON:                break;            }        }    }};@OverrIDepublic voID onDestroy() {    super.onDestroy();    // Remove the broadcast Listener    this.unregisterReceiver(mReceiver);}  // The following check needs to also be added to the onResume@OverrIDeprotected voID onResume()     super.onResume();  // Check for available NFC Adapter    PackageManager pm = getPackageManager();    NfcManager manager = (NfcManager) getSystemService(Context.NFC_SERVICE);    NfcAdapter adapter = manager.getDefaultAdapter();    if(adapter != null && adapter.isEnabled()) {        createNfcDetector();        onNfcFeatureFound();    }    else {        onNfcFeatureNotFound();    }}
总结

以上是内存溢出为你收集整理的Android – 收听NFC适配器状态已更改全部内容,希望文章能够帮你解决Android – 收听NFC适配器状态已更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存