From d2ca4038ce4f44659948e18866567b78258dd573 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Mon, 26 Jul 2021 22:13:50 +0800 Subject: [PATCH] Support multi-users for NFC payments Configure nfc payment settings based on different users. Bug: 191851086 Bug: 191845397 Bug: 192994529 Test: nfc payment with 2nd user make RunSettingsRoboTests ROBOTEST_FILTER=DefaultPaymentSettingsPreferenceControllerTest Change-Id: I52440e77b6b5837b978b381e1c1694d2b29f048e --- ...aultPaymentSettingsPreferenceController.java | 2 +- .../android/settings/nfc/PaymentBackend.java | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceController.java b/src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceController.java index 2f03c3dd545..763a5001942 100644 --- a/src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceController.java +++ b/src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceController.java @@ -82,7 +82,7 @@ public class DefaultPaymentSettingsPreferenceController extends BasePreferenceCo PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) { return UNSUPPORTED_ON_DEVICE; } - if (!mUserManager.isAdminUser()) { + if (mUserManager.isGuestUser()) { return DISABLED_FOR_USER; } if (mNfcAdapter == null) { diff --git a/src/com/android/settings/nfc/PaymentBackend.java b/src/com/android/settings/nfc/PaymentBackend.java index a87855ea923..aec7343cbc0 100644 --- a/src/com/android/settings/nfc/PaymentBackend.java +++ b/src/com/android/settings/nfc/PaymentBackend.java @@ -28,6 +28,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; @@ -141,21 +142,21 @@ public class PaymentBackend { boolean isForegroundMode() { try { - return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.NFC_PAYMENT_FOREGROUND) != 0; + return Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.NFC_PAYMENT_FOREGROUND, UserHandle.myUserId()) != 0; } catch (SettingNotFoundException e) { return false; } } void setForegroundMode(boolean foreground) { - Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.NFC_PAYMENT_FOREGROUND, foreground ? 1 : 0); + Settings.Secure.putIntForUser(mContext.getContentResolver(), + Settings.Secure.NFC_PAYMENT_FOREGROUND, foreground ? 1 : 0, UserHandle.myUserId()); } ComponentName getDefaultPaymentApp() { - String componentString = Settings.Secure.getString(mContext.getContentResolver(), - Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT); + String componentString = Settings.Secure.getStringForUser(mContext.getContentResolver(), + Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, UserHandle.myUserId()); if (componentString != null) { return ComponentName.unflattenFromString(componentString); } else { @@ -164,9 +165,9 @@ public class PaymentBackend { } public void setDefaultPaymentApp(ComponentName app) { - Settings.Secure.putString(mContext.getContentResolver(), + Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, - app != null ? app.flattenToString() : null); + app != null ? app.flattenToString() : null, UserHandle.myUserId()); refresh(); }