summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/nfc/NfcDispatcher.java20
-rwxr-xr-xsrc/com/android/nfc/NfcService.java5
2 files changed, 13 insertions, 12 deletions
diff --git a/src/com/android/nfc/NfcDispatcher.java b/src/com/android/nfc/NfcDispatcher.java
index 45a6b385..ff86d6a3 100644
--- a/src/com/android/nfc/NfcDispatcher.java
+++ b/src/com/android/nfc/NfcDispatcher.java
@@ -272,6 +272,16 @@ class NfcDispatcher {
return screenUnlocked ? DISPATCH_UNLOCK : DISPATCH_SUCCESS;
}
+ if (tryPeripheralHandover(message)) {
+ if (DBG) Log.i(TAG, "matched BT HANDOVER");
+ return screenUnlocked ? DISPATCH_UNLOCK : DISPATCH_SUCCESS;
+ }
+
+ if (NfcWifiProtectedSetup.tryNfcWifiSetup(ndef, mContext)) {
+ if (DBG) Log.i(TAG, "matched NFC WPS TOKEN");
+ return screenUnlocked ? DISPATCH_UNLOCK : DISPATCH_SUCCESS;
+ }
+
if (provisioningOnly) {
if (message == null) {
// We only allow NDEF-message dispatch in provisioning mode
@@ -286,16 +296,6 @@ class NfcDispatcher {
}
}
- if (tryPeripheralHandover(message)) {
- if (DBG) Log.i(TAG, "matched BT HANDOVER");
- return screenUnlocked ? DISPATCH_UNLOCK : DISPATCH_SUCCESS;
- }
-
- if (NfcWifiProtectedSetup.tryNfcWifiSetup(ndef, mContext)) {
- if (DBG) Log.i(TAG, "matched NFC WPS TOKEN");
- return screenUnlocked ? DISPATCH_UNLOCK : DISPATCH_SUCCESS;
- }
-
if (tryNdef(dispatch, message)) {
return screenUnlocked ? DISPATCH_UNLOCK : DISPATCH_SUCCESS;
}
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index a5aa89a6..8411fb61 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -962,8 +962,9 @@ public class NfcService implements DeviceHostListener {
@Override
public void setReaderMode(IBinder binder, IAppCallback callback, int flags, Bundle extras)
throws RemoteException {
- if (!mForegroundUtils.isInForeground(Binder.getCallingUid())) {
- Log.e(TAG, "setReaderMode: Caller not in foreground.");
+ int callingUid = Binder.getCallingUid();
+ if (callingUid != Process.SYSTEM_UID && !mForegroundUtils.isInForeground(callingUid)) {
+ Log.e(TAG, "setReaderMode: Caller is not in foreground and is not system process.");
return;
}
synchronized (NfcService.this) {