Improve NfcAdapter APIs to report correct nfc state
For enable and disable and state checking APIs, retry once if we found nfc service is dead. Bug: 173077348 Test: manual tests Change-Id: I09ecdff9b0b7071569a854e7ace42a46b62a464f
This commit is contained in:
@@ -774,6 +774,16 @@ public final class NfcAdapter {
|
||||
return sService.getNfcDtaInterface(mContext.getPackageName());
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return sService.getNfcDtaInterface(mContext.getPackageName());
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -836,6 +846,16 @@ public final class NfcAdapter {
|
||||
return sService.getState() == STATE_ON;
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.getState() == STATE_ON;
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -859,6 +879,16 @@ public final class NfcAdapter {
|
||||
return sService.getState();
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return NfcAdapter.STATE_OFF;
|
||||
}
|
||||
try {
|
||||
return sService.getState();
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return NfcAdapter.STATE_OFF;
|
||||
}
|
||||
}
|
||||
@@ -886,6 +916,16 @@ public final class NfcAdapter {
|
||||
return sService.enable();
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.enable();
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -915,6 +955,16 @@ public final class NfcAdapter {
|
||||
return sService.disable(true);
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.disable(true);
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -930,6 +980,16 @@ public final class NfcAdapter {
|
||||
return sService.disable(persist);
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.disable(persist);
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1763,6 +1823,16 @@ public final class NfcAdapter {
|
||||
return sService.setNfcSecure(enable);
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.setNfcSecure(enable);
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1781,6 +1851,16 @@ public final class NfcAdapter {
|
||||
return sService.deviceSupportsNfcSecure();
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.deviceSupportsNfcSecure();
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1801,6 +1881,16 @@ public final class NfcAdapter {
|
||||
return sService.isNfcSecureEnabled();
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return sService.isNfcSecureEnabled();
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -2088,6 +2178,16 @@ public final class NfcAdapter {
|
||||
return sService.getNfcAdapterExtrasInterface(mContext.getPackageName());
|
||||
} catch (RemoteException e) {
|
||||
attemptDeadServiceRecovery(e);
|
||||
// Try one more time
|
||||
if (sService == null) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return sService.getNfcAdapterExtrasInterface(mContext.getPackageName());
|
||||
} catch (RemoteException ee) {
|
||||
Log.e(TAG, "Failed to recover NFC Service.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user