我正在尝试构建一个使用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适配器状态已更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)