Set preference visible to false when there is no keyboard.
1. Physical keyboard settings should only show up if at least one PK is connected. 2. Update tests. 3. Fix NullPointerException. Bug: 269983475 Bug: 270109384 Bug: 271357910 Test: atest and manual Change-Id: If7798587fb386dbf669fc249cab304d91a26879b
This commit is contained in:
@@ -21,7 +21,6 @@ import android.content.Context;
|
||||
import android.hardware.input.InputDeviceIdentifier;
|
||||
import android.hardware.input.InputManager;
|
||||
import android.hardware.input.KeyboardLayout;
|
||||
import android.view.InputDevice;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.preference.Preference;
|
||||
@@ -37,7 +36,6 @@ import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class KeyboardLayoutPickerController extends BasePreferenceController implements
|
||||
InputManager.InputDeviceListener, LifecycleObserver, OnStart, OnStop {
|
||||
|
||||
@@ -68,15 +66,12 @@ public class KeyboardLayoutPickerController extends BasePreferenceController imp
|
||||
@Override
|
||||
public void onStart() {
|
||||
mIm.registerInputDeviceListener(this, null);
|
||||
|
||||
final InputDevice inputDevice =
|
||||
mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
|
||||
if (inputDevice == null) {
|
||||
mParent.getActivity().finish();
|
||||
if (mInputDeviceIdentifier == null
|
||||
|| NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) {
|
||||
return;
|
||||
}
|
||||
mInputDeviceId = inputDevice.getId();
|
||||
|
||||
mInputDeviceId =
|
||||
NewKeyboardSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier).getId();
|
||||
updateCheckedState();
|
||||
}
|
||||
|
||||
@@ -150,6 +145,9 @@ public class KeyboardLayoutPickerController extends BasePreferenceController imp
|
||||
}
|
||||
|
||||
private void createPreferenceHierarchy() {
|
||||
if (mKeyboardLayouts == null) {
|
||||
return;
|
||||
}
|
||||
for (KeyboardLayout layout : mKeyboardLayouts) {
|
||||
final SwitchPreference pref = new SwitchPreference(mScreen.getContext());
|
||||
pref.setTitle(layout.getLabel());
|
||||
|
Reference in New Issue
Block a user