Merge Tap & Pay settings entries with NFC

Bug: 142231537
Test: make -j42 RunSettingsRoboTests
Change-Id: I54ea0cdf711f2c381f5bba8575fc22bd6329f3c6
This commit is contained in:
robertluo
2020-02-03 14:45:46 +08:00
parent 0a832ffe10
commit 81c79bb239
12 changed files with 536 additions and 23 deletions

View File

@@ -21,11 +21,23 @@ import android.content.pm.PackageManager;
import android.nfc.NfcAdapter;
import android.os.UserManager;
import com.android.settings.core.BasePreferenceController;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
public class DefaultPaymentSettingsPreferenceController extends BasePreferenceController {
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
/**
* This Controller works with PaymentSettingsEnabler to control payment features availability
* based on NFC status
*/
public class DefaultPaymentSettingsPreferenceController extends BasePreferenceController
implements LifecycleObserver, OnResume, OnPause {
private final NfcAdapter mNfcAdapter;
private PaymentSettingsEnabler mPaymentSettingsEnabler;
private final PackageManager mPackageManager;
private final UserManager mUserManager;
@@ -37,6 +49,32 @@ public class DefaultPaymentSettingsPreferenceController extends BasePreferenceCo
mNfcAdapter = NfcAdapter.getDefaultAdapter(mContext);
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
if (!isAvailable()) {
mPaymentSettingsEnabler = null;
return;
}
final Preference preference = screen.findPreference(getPreferenceKey());
mPaymentSettingsEnabler = new PaymentSettingsEnabler(mContext, preference);
}
@Override
public void onResume() {
if (mPaymentSettingsEnabler != null) {
mPaymentSettingsEnabler.resume();
}
}
@Override
public void onPause() {
if (mPaymentSettingsEnabler != null) {
mPaymentSettingsEnabler.pause();
}
}
@Override
public int getAvailabilityStatus() {
if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)
@@ -47,9 +85,12 @@ public class DefaultPaymentSettingsPreferenceController extends BasePreferenceCo
if (!mUserManager.isAdminUser()) {
return DISABLED_FOR_USER;
}
if (mNfcAdapter == null || !mNfcAdapter.isEnabled()) {
if (mNfcAdapter == null) {
return CONDITIONALLY_UNAVAILABLE;
}
if (!mNfcAdapter.isEnabled()) {
return DISABLED_DEPENDENT_SETTING;
}
return AVAILABLE;
}
}