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 ;
4042import static org .schabi .newpipe .util .Localization .assureCorrectAppLanguage ;
4143
4244public class ContentSettingsFragment extends BasePreferenceFragment {
43- private static final int REQUEST_IMPORT_PATH = 8945 ;
44- private static final int REQUEST_EXPORT_PATH = 30945 ;
4545 private static final String ZIP_MIME_TYPE = "application/zip" ;
4646 private static final SimpleDateFormat EXPORT_DATE_FORMAT
4747 = new SimpleDateFormat ("yyyyMMdd_HHmmss" , Locale .US );
@@ -56,6 +56,10 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
5656 private Localization initialSelectedLocalization ;
5757 private ContentCountry initialSelectedContentCountry ;
5858 private String initialLanguage ;
59+ private final ActivityResultLauncher <Intent > requestImportPathLauncher =
60+ registerForActivityResult (new StartActivityForResult (), this ::requestImportPathResult );
61+ private final ActivityResultLauncher <Intent > requestExportPathLauncher =
62+ registerForActivityResult (new StartActivityForResult (), this ::requestExportPathResult );
5963
6064 @ Override
6165 public void onCreatePreferences (final Bundle savedInstanceState , final String rootKey ) {
@@ -72,20 +76,18 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro
7276
7377 final Preference importDataPreference = requirePreference (R .string .import_data );
7478 importDataPreference .setOnPreferenceClickListener ((Preference p ) -> {
75- startActivityForResult (
76- StoredFileHelper .getPicker (requireContext (), getImportExportDataUri ()),
77- REQUEST_IMPORT_PATH );
79+ requestImportPathLauncher .launch (
80+ StoredFileHelper .getPicker (requireContext (), getImportExportDataUri ()));
7881 return true ;
7982 });
8083
8184 final Preference exportDataPreference = requirePreference (R .string .export_data );
8285 exportDataPreference .setOnPreferenceClickListener ((final Preference p ) -> {
8386
84- startActivityForResult (
87+ requestExportPathLauncher . launch (
8588 StoredFileHelper .getNewPicker (requireContext (),
8689 "NewPipeData-" + EXPORT_DATE_FORMAT .format (new Date ()) + ".zip" ,
87- ZIP_MIME_TYPE , getImportExportDataUri ()),
88- REQUEST_EXPORT_PATH );
90+ ZIP_MIME_TYPE , getImportExportDataUri ()));
8991 return true ;
9092 });
9193
@@ -157,37 +159,34 @@ public void onDestroy() {
157159 }
158160 }
159161
160- @ Override
161- public void onActivityResult (final int requestCode ,
162- final int resultCode ,
163- @ Nullable final Intent data ) {
162+ private void requestExportPathResult (final ActivityResult result ) {
164163 assureCorrectAppLanguage (getContext ());
165- super .onActivityResult (requestCode , resultCode , data );
166- if (DEBUG ) {
167- Log .d (TAG , "onActivityResult() called with: "
168- + "requestCode = [" + requestCode + "], "
169- + "resultCode = [" + resultCode + "], "
170- + "data = [" + data + "]" );
171- }
164+ if (result .getResultCode () == Activity .RESULT_OK && result .getData () != null ) {
165+ lastImportExportDataUri = result .getData ().getData (); // will be saved only on success
172166
173- if ((requestCode == REQUEST_IMPORT_PATH || requestCode == REQUEST_EXPORT_PATH )
174- && resultCode == Activity .RESULT_OK && data != null && data .getData () != null ) {
167+ final StoredFileHelper file
168+ = new StoredFileHelper (getContext (), result .getData ().getData (), ZIP_MIME_TYPE );
169+
170+ exportDatabase (file );
171+ }
172+ }
175173
176- lastImportExportDataUri = data .getData (); // will be saved only on success
174+ private void requestImportPathResult (final ActivityResult result ) {
175+ assureCorrectAppLanguage (getContext ());
176+ if (result .getResultCode () == Activity .RESULT_OK && result .getData () != null ) {
177+ lastImportExportDataUri = result .getData ().getData (); // will be saved only on success
177178
178179 final StoredFileHelper file
179- = new StoredFileHelper (getContext (), data .getData (), ZIP_MIME_TYPE );
180- if (requestCode == REQUEST_EXPORT_PATH ) {
181- exportDatabase (file );
182- } else {
183- final AlertDialog .Builder builder = new AlertDialog .Builder (requireActivity ());
184- builder .setMessage (R .string .override_current_data )
185- .setPositiveButton (R .string .finish ,
186- (DialogInterface d , int id ) -> importDatabase (file ))
187- .setNegativeButton (R .string .cancel ,
188- (DialogInterface d , int id ) -> d .cancel ());
189- builder .create ().show ();
190- }
180+ = new StoredFileHelper (getContext (), result .getData ().getData (), ZIP_MIME_TYPE );
181+
182+ new AlertDialog .Builder (requireActivity ())
183+ .setMessage (R .string .override_current_data )
184+ .setPositiveButton (R .string .finish , (d , id ) ->
185+ importDatabase (file ))
186+ .setNegativeButton (R .string .cancel , (d , id ) ->
187+ d .cancel ())
188+ .create ()
189+ .show ();
191190 }
192191 }
193192
0 commit comments