diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9260201af6a..de4ae39e84d 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1922,6 +1922,7 @@ + diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java index f2d60f19814..8eb5c4f6c19 100644 --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java @@ -16,6 +16,8 @@ package com.android.settings.development; +import static android.service.quicksettings.TileService.ACTION_QS_TILE_PREFERENCES; + import android.app.Activity; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothA2dp; @@ -23,12 +25,14 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothProfile; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.SystemProperties; import android.os.UserManager; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -41,6 +45,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.development.autofill.AutofillLoggingLevelPreferenceController; import com.android.settings.development.autofill.AutofillResetOptionsPreferenceController; @@ -52,6 +57,7 @@ import com.android.settings.development.bluetooth.BluetoothCodecDialogPreference import com.android.settings.development.bluetooth.BluetoothHDAudioPreferenceController; import com.android.settings.development.bluetooth.BluetoothQualityDialogPreferenceController; import com.android.settings.development.bluetooth.BluetoothSampleRateDialogPreferenceController; +import com.android.settings.development.qstile.DevelopmentTiles; import com.android.settings.development.storage.SharedDataPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBar; @@ -199,11 +205,42 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra // Restore UI state based on whether developer options is enabled if (DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(getContext())) { enableDeveloperOptions(); + handleQsTileLongPressActionIfAny(); } else { disableDeveloperOptions(); } } + /** + * Long-pressing a developer options quick settings tile will by default (see + * QS_TILE_PREFERENCES in the manifest) take you to the developer options page. + * Some tiles may want to go into their own page within the developer options. + */ + private void handleQsTileLongPressActionIfAny() { + Intent intent = getActivity().getIntent(); + if (intent == null || !TextUtils.equals(ACTION_QS_TILE_PREFERENCES, intent.getAction())) { + return; + } + + Log.d(TAG, "Developer options started from qstile long-press"); + final ComponentName componentName = (ComponentName) intent.getParcelableExtra( + Intent.EXTRA_COMPONENT_NAME); + if (componentName == null) { + return; + } + + if (DevelopmentTiles.WirelessDebugging.class.getName().equals( + componentName.getClassName()) && getDevelopmentOptionsController( + WirelessDebuggingPreferenceController.class).isAvailable()) { + Log.d(TAG, "Long press from wireless debugging qstile"); + new SubSettingLauncher(getContext()) + .setDestination(WirelessDebuggingFragment.class.getName()) + .setSourceMetricsCategory(SettingsEnums.SETTINGS_ADB_WIRELESS) + .launch(); + } + // Add other qstiles here + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {