22
33import android .app .Activity ;
44import android .content .Context ;
5- import android .content .DialogInterface ;
65import android .content .Intent ;
76import android .content .SharedPreferences ;
87import android .net .Uri ;
98import android .os .Bundle ;
109import android .util .Log ;
1110import android .widget .Toast ;
1211
12+ import androidx .activity .result .ActivityResult ;
13+ import androidx .activity .result .ActivityResultLauncher ;
14+ import androidx .activity .result .contract .ActivityResultContracts .StartActivityForResult ;
1315import androidx .annotation .Nullable ;
1416import androidx .appcompat .app .AlertDialog ;
1517import androidx .core .content .ContextCompat ;
3941import static org .schabi .newpipe .util .Localization .assureCorrectAppLanguage ;
4042
4143public class ContentSettingsFragment extends BasePreferenceFragment {
42- private static final int REQUEST_IMPORT_PATH = 8945 ;
43- private static final int REQUEST_EXPORT_PATH = 30945 ;
4444 private static final String ZIP_MIME_TYPE = "application/zip" ;
4545 private static final SimpleDateFormat EXPORT_DATE_FORMAT
4646 = new SimpleDateFormat ("yyyyMMdd_HHmmss" , Locale .US );
@@ -55,6 +55,10 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
5555 private Localization initialSelectedLocalization ;
5656 private ContentCountry initialSelectedContentCountry ;
5757 private String initialLanguage ;
58+ private final ActivityResultLauncher <Intent > requestImportPathLauncher =
59+ registerForActivityResult (new StartActivityForResult (), this ::requestImportPathResult );
60+ private final ActivityResultLauncher <Intent > requestExportPathLauncher =
61+ registerForActivityResult (new StartActivityForResult (), this ::requestExportPathResult );
5862
5963 @ Override
6064 public void onCreatePreferences (final Bundle savedInstanceState , final String rootKey ) {
@@ -71,20 +75,18 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro
7175
7276 final Preference importDataPreference = requirePreference (R .string .import_data );
7377 importDataPreference .setOnPreferenceClickListener ((Preference p ) -> {
74- startActivityForResult (
75- StoredFileHelper .getPicker (requireContext (), getImportExportDataUri ()),
76- REQUEST_IMPORT_PATH );
78+ requestImportPathLauncher .launch (
79+ StoredFileHelper .getPicker (requireContext (), getImportExportDataUri ()));
7780 return true ;
7881 });
7982
8083 final Preference exportDataPreference = requirePreference (R .string .export_data );
8184 exportDataPreference .setOnPreferenceClickListener ((final Preference p ) -> {
8285
83- startActivityForResult (
86+ requestExportPathLauncher . launch (
8487 StoredFileHelper .getNewPicker (requireContext (),
8588 "NewPipeData-" + EXPORT_DATE_FORMAT .format (new Date ()) + ".zip" ,
86- ZIP_MIME_TYPE , getImportExportDataUri ()),
87- REQUEST_EXPORT_PATH );
89+ ZIP_MIME_TYPE , getImportExportDataUri ()));
8890 return true ;
8991 });
9092
@@ -156,37 +158,34 @@ public void onDestroy() {
156158 }
157159 }
158160
159- @ Override
160- public void onActivityResult (final int requestCode ,
161- final int resultCode ,
162- @ Nullable final Intent data ) {
161+ private void requestExportPathResult (final ActivityResult result ) {
163162 assureCorrectAppLanguage (getContext ());
164- super .onActivityResult (requestCode , resultCode , data );
165- if (DEBUG ) {
166- Log .d (TAG , "onActivityResult() called with: "
167- + "requestCode = [" + requestCode + "], "
168- + "resultCode = [" + resultCode + "], "
169- + "data = [" + data + "]" );
170- }
163+ if (result .getResultCode () == Activity .RESULT_OK && result .getData () != null ) {
164+ lastImportExportDataUri = result .getData ().getData (); // will be saved only on success
171165
172- if ((requestCode == REQUEST_IMPORT_PATH || requestCode == REQUEST_EXPORT_PATH )
173- && resultCode == Activity .RESULT_OK && data != null && data .getData () != null ) {
166+ final StoredFileHelper file
167+ = new StoredFileHelper (getContext (), result .getData ().getData (), ZIP_MIME_TYPE );
168+
169+ exportDatabase (file );
170+ }
171+ }
174172
175- lastImportExportDataUri = data .getData (); // will be saved only on success
173+ private void requestImportPathResult (final ActivityResult result ) {
174+ assureCorrectAppLanguage (getContext ());
175+ if (result .getResultCode () == Activity .RESULT_OK && result .getData () != null ) {
176+ lastImportExportDataUri = result .getData ().getData (); // will be saved only on success
176177
177178 final StoredFileHelper file
178- = new StoredFileHelper (getContext (), data .getData (), ZIP_MIME_TYPE );
179- if (requestCode == REQUEST_EXPORT_PATH ) {
180- exportDatabase (file );
181- } else {
182- final AlertDialog .Builder builder = new AlertDialog .Builder (requireActivity ());
183- builder .setMessage (R .string .override_current_data )
184- .setPositiveButton (R .string .finish ,
185- (DialogInterface d , int id ) -> importDatabase (file ))
186- .setNegativeButton (R .string .cancel ,
187- (DialogInterface d , int id ) -> d .cancel ());
188- builder .create ().show ();
189- }
179+ = new StoredFileHelper (getContext (), result .getData ().getData (), ZIP_MIME_TYPE );
180+
181+ new AlertDialog .Builder (requireActivity ())
182+ .setMessage (R .string .override_current_data )
183+ .setPositiveButton (R .string .finish , (d , id ) ->
184+ importDatabase (file ))
185+ .setNegativeButton (R .string .cancel , (d , id ) ->
186+ d .cancel ())
187+ .create ()
188+ .show ();
190189 }
191190 }
192191
0 commit comments