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
This commit is contained in:
Jack Yu
2021-07-26 22:13:50 +08:00
parent f36c2bc0a4
commit d2ca4038ce
2 changed files with 10 additions and 9 deletions

View File

@@ -82,7 +82,7 @@ public class DefaultPaymentSettingsPreferenceController extends BasePreferenceCo
PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) { PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
return UNSUPPORTED_ON_DEVICE; return UNSUPPORTED_ON_DEVICE;
} }
if (!mUserManager.isAdminUser()) { if (mUserManager.isGuestUser()) {
return DISABLED_FOR_USER; return DISABLED_FOR_USER;
} }
if (mNfcAdapter == null) { if (mNfcAdapter == null) {

View File

@@ -28,6 +28,7 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException; import android.provider.Settings.SettingNotFoundException;
@@ -141,21 +142,21 @@ public class PaymentBackend {
boolean isForegroundMode() { boolean isForegroundMode() {
try { try {
return Settings.Secure.getInt(mContext.getContentResolver(), return Settings.Secure.getIntForUser(mContext.getContentResolver(),
Settings.Secure.NFC_PAYMENT_FOREGROUND) != 0; Settings.Secure.NFC_PAYMENT_FOREGROUND, UserHandle.myUserId()) != 0;
} catch (SettingNotFoundException e) { } catch (SettingNotFoundException e) {
return false; return false;
} }
} }
void setForegroundMode(boolean foreground) { void setForegroundMode(boolean foreground) {
Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.putIntForUser(mContext.getContentResolver(),
Settings.Secure.NFC_PAYMENT_FOREGROUND, foreground ? 1 : 0); Settings.Secure.NFC_PAYMENT_FOREGROUND, foreground ? 1 : 0, UserHandle.myUserId());
} }
ComponentName getDefaultPaymentApp() { ComponentName getDefaultPaymentApp() {
String componentString = Settings.Secure.getString(mContext.getContentResolver(), String componentString = Settings.Secure.getStringForUser(mContext.getContentResolver(),
Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT); Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, UserHandle.myUserId());
if (componentString != null) { if (componentString != null) {
return ComponentName.unflattenFromString(componentString); return ComponentName.unflattenFromString(componentString);
} else { } else {
@@ -164,9 +165,9 @@ public class PaymentBackend {
} }
public void setDefaultPaymentApp(ComponentName app) { public void setDefaultPaymentApp(ComponentName app) {
Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.putStringForUser(mContext.getContentResolver(),
Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT,
app != null ? app.flattenToString() : null); app != null ? app.flattenToString() : null, UserHandle.myUserId());
refresh(); refresh();
} }