diff options
Diffstat (limited to 'packages/PrintSpooler/src')
-rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index bd2b5ec8436e..4a3a6d248254 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -84,6 +84,7 @@ import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; +import android.window.OnBackInvokedDispatcher; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -323,6 +324,8 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat }); getLoaderManager().initLoader(LOADER_ID_ENABLED_PRINT_SERVICES, null, this); + getWindow().getOnBackInvokedDispatcher().registerOnBackInvokedCallback( + OnBackInvokedDispatcher.PRIORITY_DEFAULT, this::onBackInvoked); } private void onConnectedToPrintSpooler(final IBinder documentAdapter) { @@ -481,17 +484,21 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) && event.isTracking() && !event.isCanceled()) { - if (mPrintPreviewController != null && mPrintPreviewController.isOptionsOpened() - && !hasErrors()) { - mPrintPreviewController.closeOptions(); - } else { - cancelPrint(); - } + onBackInvoked(); return true; } return super.onKeyUp(keyCode, event); } + private void onBackInvoked() { + if (mPrintPreviewController != null && mPrintPreviewController.isOptionsOpened() + && !hasErrors()) { + mPrintPreviewController.closeOptions(); + } else { + cancelPrint(); + } + } + @Override public void onRequestContentUpdate() { if (canUpdateDocument()) { |