1717import android .view .ViewGroup ;
1818import android .widget .Toast ;
1919
20+ import androidx .activity .result .ActivityResult ;
21+ import androidx .activity .result .ActivityResultLauncher ;
22+ import androidx .activity .result .contract .ActivityResultContracts .StartActivityForResult ;
2023import androidx .annotation .NonNull ;
2124import androidx .appcompat .app .AlertDialog ;
2225import androidx .fragment .app .Fragment ;
4447public class MissionsFragment extends Fragment {
4548
4649 private static final int SPAN_SIZE = 2 ;
47- private static final int REQUEST_DOWNLOAD_SAVE_AS = 0x1230 ;
4850
4951 private SharedPreferences mPrefs ;
5052 private boolean mLinear ;
@@ -64,7 +66,8 @@ public class MissionsFragment extends Fragment {
6466 private boolean mForceUpdate ;
6567
6668 private DownloadMission unsafeMissionTarget = null ;
67-
69+ private final ActivityResultLauncher <Intent > requestDownloadSaveAsLauncher =
70+ registerForActivityResult (new StartActivityForResult (), this ::requestDownloadSaveAsResult );
6871 private final ServiceConnection mConnection = new ServiceConnection () {
6972
7073 @ Override
@@ -254,8 +257,9 @@ private void recoverMission(@NonNull DownloadMission mission) {
254257 initialPath = Uri .parse (initialSavePath .getAbsolutePath ());
255258 }
256259
257- startActivityForResult (StoredFileHelper .getNewPicker (mContext , mission .storage .getName (),
258- mission .storage .getType (), initialPath ), REQUEST_DOWNLOAD_SAVE_AS );
260+ requestDownloadSaveAsLauncher .launch (
261+ StoredFileHelper .getNewPicker (mContext , mission .storage .getName (),
262+ mission .storage .getType (), initialPath ));
259263 }
260264
261265 @ Override
@@ -289,18 +293,17 @@ public void onPause() {
289293 if (mBinder != null ) mBinder .enableNotifications (true );
290294 }
291295
292- @ Override
293- public void onActivityResult (int requestCode , int resultCode , Intent data ) {
294- super .onActivityResult (requestCode , resultCode , data );
295-
296- if (requestCode != REQUEST_DOWNLOAD_SAVE_AS || resultCode != Activity .RESULT_OK ) return ;
296+ private void requestDownloadSaveAsResult (final ActivityResult result ) {
297+ if (result .getResultCode () != Activity .RESULT_OK ) {
298+ return ;
299+ }
297300
298- if (unsafeMissionTarget == null || data .getData () == null ) {
301+ if (unsafeMissionTarget == null || result .getData () == null ) {
299302 return ;
300303 }
301304
302305 try {
303- Uri fileUri = data .getData ();
306+ Uri fileUri = result . getData () .getData ();
304307 if (fileUri .getAuthority () != null && FilePickerActivityHelper .isOwnFileUri (mContext , fileUri )) {
305308 fileUri = Uri .fromFile (Utils .getFileForUri (fileUri ));
306309 }
0 commit comments