一段时间后检查 NFC 是否仍处于启用状态
Check after a period of time if NFC is still enabled
我正在开发一个需要 NFC 的应用程序。我找到了一种方法来确保用户启用 nfc(如果尚未启用)...
public void nfcOnPressed(View view){
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(view.getContext());
if (!nfc.isEnabled())
{
Toast.makeText(getApplicationContext(), "Activate NFC", Toast.LENGTH_LONG).show();
startActivity(new Intent(Settings.ACTION_NFC_SETTINGS));
} else{
Toast.makeText(getApplicationContext(), "NFC is already activated.", Toast.LENGTH_LONG).show();
}
}
现在,这是我的问题:用户必须转到另一个页面才能使用 nfc 功能,但是如果他在另一个页面上 时没有检查 如果他打开它中途关闭。
一个例子:我打开我的应用程序,启用 NFC,转到下一页(在转到下一页之前,另一种方法会检查它是否仍处于启用状态,如果没有,我什至无法继续前进)然后,在显示新页面后,我将其禁用。所以现在我在新页面上显示了我可以用 NFC 做的所有事情,但你不能,因为,好吧,我禁用了它。
有没有办法像定时检查 NFC 是否启用一样?或者有没有办法不断检查它(即使我真的不想那样做)。
如果您需要更多信息,请告诉我您需要什么。
非常感谢。 :)
为什么不通过广播接收器监听 NFC 状态的变化?
将以下代码添加到您的活动 onCreate() 方法中:
IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
this.registerReceiver(mReceiver, filter);
内部私有 class 在您的 activity 中声明(或您喜欢的任何其他地方):
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;
}
}
}
};
@Override
public void onDestroy() {
super.onDestroy();
// Remove the broadcast listener
this.unregisterReceiver(mReceiver);
}
// The following check needs to also be added to the onResume
@Override
protected 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 - Listening to NFC Adapter State Changed
我正在开发一个需要 NFC 的应用程序。我找到了一种方法来确保用户启用 nfc(如果尚未启用)...
public void nfcOnPressed(View view){
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(view.getContext());
if (!nfc.isEnabled())
{
Toast.makeText(getApplicationContext(), "Activate NFC", Toast.LENGTH_LONG).show();
startActivity(new Intent(Settings.ACTION_NFC_SETTINGS));
} else{
Toast.makeText(getApplicationContext(), "NFC is already activated.", Toast.LENGTH_LONG).show();
}
}
现在,这是我的问题:用户必须转到另一个页面才能使用 nfc 功能,但是如果他在另一个页面上 时没有检查 如果他打开它中途关闭。
一个例子:我打开我的应用程序,启用 NFC,转到下一页(在转到下一页之前,另一种方法会检查它是否仍处于启用状态,如果没有,我什至无法继续前进)然后,在显示新页面后,我将其禁用。所以现在我在新页面上显示了我可以用 NFC 做的所有事情,但你不能,因为,好吧,我禁用了它。
有没有办法像定时检查 NFC 是否启用一样?或者有没有办法不断检查它(即使我真的不想那样做)。
如果您需要更多信息,请告诉我您需要什么。
非常感谢。 :)
为什么不通过广播接收器监听 NFC 状态的变化?
将以下代码添加到您的活动 onCreate() 方法中:
IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
this.registerReceiver(mReceiver, filter);
内部私有 class 在您的 activity 中声明(或您喜欢的任何其他地方):
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;
}
}
}
};
@Override
public void onDestroy() {
super.onDestroy();
// Remove the broadcast listener
this.unregisterReceiver(mReceiver);
}
// The following check needs to also be added to the onResume
@Override
protected 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 - Listening to NFC Adapter State Changed