diff options
-rw-r--r-- | packages/PrintSpooler/AndroidManifest.xml | 1 | ||||
-rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java | 19 |
2 files changed, 14 insertions, 6 deletions
diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml index 003420829c8a..f97b75884a8a 100644 --- a/packages/PrintSpooler/AndroidManifest.xml +++ b/packages/PrintSpooler/AndroidManifest.xml @@ -65,6 +65,7 @@ android:configChanges="mnc|mnc|touchscreen|navigation|screenLayout|screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection|density" android:permission="android.permission.BIND_PRINT_SPOOLER_SERVICE" android:theme="@style/Theme.PrintActivity" + android:enableOnBackInvokedCallback="true" android:exported="true"> <intent-filter> <action android:name="android.print.PRINT_DIALOG" /> 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()) { |