|
23 | 23 | package com.microsoft.identity.common.internal.providers.oauth2;
|
24 | 24 |
|
25 | 25 | import android.os.Bundle;
|
| 26 | +import android.view.View; |
26 | 27 |
|
| 28 | +import androidx.activity.OnBackPressedCallback; |
27 | 29 | import androidx.annotation.NonNull;
|
28 | 30 | import androidx.annotation.Nullable;
|
29 | 31 | import androidx.fragment.app.Fragment;
|
@@ -103,9 +105,21 @@ public void onCreate(@Nullable final Bundle savedInstanceState) {
|
103 | 105 | }
|
104 | 106 | }
|
105 | 107 |
|
| 108 | + @Override |
| 109 | + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { |
| 110 | + super.onViewCreated(view, savedInstanceState); |
| 111 | + requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) { |
| 112 | + @Override |
| 113 | + public void handleOnBackPressed() { |
| 114 | + handleBackButtonPressed(); |
| 115 | + } |
| 116 | + }); |
| 117 | + } |
| 118 | + |
106 | 119 | void finish() {
|
107 | 120 | final String methodName = "#finish";
|
108 | 121 | LocalBroadcaster.INSTANCE.unregisterCallback(CANCEL_AUTHORIZATION_REQUEST);
|
| 122 | + |
109 | 123 | final FragmentActivity activity = getActivity();
|
110 | 124 | if (activity instanceof AuthorizationActivity) {
|
111 | 125 | activity.finish();
|
@@ -189,12 +203,8 @@ public void onDestroy() {
|
189 | 203 | super.onDestroy();
|
190 | 204 | }
|
191 | 205 |
|
192 |
| - /** |
193 |
| - * NOTE: Fragment-only mode will not support this, as we don't own the activity. |
194 |
| - * This must be invoked by AuthorizationActivity.onBackPressed(). |
195 |
| - */ |
196 |
| - public boolean onBackPressed() { |
197 |
| - return false; |
| 206 | + public void handleBackButtonPressed() { |
| 207 | + cancelAuthorization(true); |
198 | 208 | }
|
199 | 209 |
|
200 | 210 | void sendResult(final RawAuthorizationResult.ResultCode resultCode) {
|
|
0 commit comments