Merge pull request #6536 from TacoTheDank/moar-onactivityresult

More onActivityResult deprecation fixes
This commit is contained in:
Stypox 2021-07-18 10:24:00 +02:00 committed by GitHub
commit baa12c7069
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 121 additions and 97 deletions

View File

@ -201,7 +201,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.documentfile:documentfile:1.0.1' implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'androidx.fragment:fragment-ktx:1.3.4' implementation 'androidx.fragment:fragment-ktx:1.3.5'
implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}" implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}"
implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}" implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'

View File

@ -20,6 +20,9 @@ import android.widget.RadioGroup;
import android.widget.SeekBar; import android.widget.SeekBar;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
import androidx.annotation.IdRes; import androidx.annotation.IdRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -82,9 +85,6 @@ public class DownloadDialog extends DialogFragment
implements RadioGroup.OnCheckedChangeListener, AdapterView.OnItemSelectedListener { implements RadioGroup.OnCheckedChangeListener, AdapterView.OnItemSelectedListener {
private static final String TAG = "DialogFragment"; private static final String TAG = "DialogFragment";
private static final boolean DEBUG = MainActivity.DEBUG; private static final boolean DEBUG = MainActivity.DEBUG;
private static final int REQUEST_DOWNLOAD_SAVE_AS = 0x1230;
private static final int REQUEST_DOWNLOAD_PICK_VIDEO_FOLDER = 0x789E;
private static final int REQUEST_DOWNLOAD_PICK_AUDIO_FOLDER = 0x789F;
@State @State
StreamInfo currentInfo; StreamInfo currentInfo;
@ -122,6 +122,16 @@ public class DownloadDialog extends DialogFragment
private String filenameTmp; private String filenameTmp;
private String mimeTmp; private String mimeTmp;
private final ActivityResultLauncher<Intent> requestDownloadSaveAsLauncher =
registerForActivityResult(
new StartActivityForResult(), this::requestDownloadSaveAsResult);
private final ActivityResultLauncher<Intent> requestDownloadPickAudioFolderLauncher =
registerForActivityResult(
new StartActivityForResult(), this::requestDownloadPickAudioFolderResult);
private final ActivityResultLauncher<Intent> requestDownloadPickVideoFolderLauncher =
registerForActivityResult(
new StartActivityForResult(), this::requestDownloadPickVideoFolderResult);
public static DownloadDialog newInstance(final StreamInfo info) { public static DownloadDialog newInstance(final StreamInfo info) {
final DownloadDialog dialog = new DownloadDialog(); final DownloadDialog dialog = new DownloadDialog();
dialog.setInfo(info); dialog.setInfo(info);
@ -372,39 +382,58 @@ public class DownloadDialog extends DialogFragment
// Streams Spinner Listener // Streams Spinner Listener
//////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////*/
@Override private void requestDownloadPickAudioFolderResult(final ActivityResult result) {
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) { requestDownloadPickFolderResult(
super.onActivityResult(requestCode, resultCode, data); result, getString(R.string.download_path_audio_key), DownloadManager.TAG_AUDIO);
}
if (resultCode != Activity.RESULT_OK) { private void requestDownloadPickVideoFolderResult(final ActivityResult result) {
requestDownloadPickFolderResult(
result, getString(R.string.download_path_video_key), DownloadManager.TAG_VIDEO);
}
private void requestDownloadSaveAsResult(final ActivityResult result) {
if (result.getResultCode() != Activity.RESULT_OK) {
return; return;
} }
if (data.getData() == null) { if (result.getData() == null || result.getData().getData() == null) {
showFailedDialog(R.string.general_error); showFailedDialog(R.string.general_error);
return; return;
} }
if (requestCode == REQUEST_DOWNLOAD_SAVE_AS) { if (FilePickerActivityHelper.isOwnFileUri(context, result.getData().getData())) {
if (FilePickerActivityHelper.isOwnFileUri(context, data.getData())) { final File file = Utils.getFileForUri(result.getData().getData());
final File file = Utils.getFileForUri(data.getData());
checkSelectedDownload(null, Uri.fromFile(file), file.getName(), checkSelectedDownload(null, Uri.fromFile(file), file.getName(),
StoredFileHelper.DEFAULT_MIME); StoredFileHelper.DEFAULT_MIME);
return; return;
} }
final DocumentFile docFile = DocumentFile.fromSingleUri(context, data.getData()); final DocumentFile docFile
= DocumentFile.fromSingleUri(context, result.getData().getData());
if (docFile == null) { if (docFile == null) {
showFailedDialog(R.string.general_error); showFailedDialog(R.string.general_error);
return; return;
} }
// check if the selected file was previously used // check if the selected file was previously used
checkSelectedDownload(null, data.getData(), docFile.getName(), checkSelectedDownload(null, result.getData().getData(), docFile.getName(),
docFile.getType()); docFile.getType());
} else if (requestCode == REQUEST_DOWNLOAD_PICK_AUDIO_FOLDER }
|| requestCode == REQUEST_DOWNLOAD_PICK_VIDEO_FOLDER) {
Uri uri = data.getData(); private void requestDownloadPickFolderResult(final ActivityResult result,
final String key,
final String tag) {
if (result.getResultCode() != Activity.RESULT_OK) {
return;
}
if (result.getData() == null || result.getData().getData() == null) {
showFailedDialog(R.string.general_error);
return;
}
Uri uri = result.getData().getData();
if (FilePickerActivityHelper.isOwnFileUri(context, uri)) { if (FilePickerActivityHelper.isOwnFileUri(context, uri)) {
uri = Uri.fromFile(Utils.getFileForUri(uri)); uri = Uri.fromFile(Utils.getFileForUri(uri));
} else { } else {
@ -412,16 +441,6 @@ public class DownloadDialog extends DialogFragment
StoredDirectoryHelper.PERMISSION_FLAGS); StoredDirectoryHelper.PERMISSION_FLAGS);
} }
final String key;
final String tag;
if (requestCode == REQUEST_DOWNLOAD_PICK_AUDIO_FOLDER) {
key = getString(R.string.download_path_audio_key);
tag = DownloadManager.TAG_AUDIO;
} else {
key = getString(R.string.download_path_video_key);
tag = DownloadManager.TAG_VIDEO;
}
PreferenceManager.getDefaultSharedPreferences(context).edit() PreferenceManager.getDefaultSharedPreferences(context).edit()
.putString(key, uri.toString()).apply(); .putString(key, uri.toString()).apply();
@ -434,7 +453,6 @@ public class DownloadDialog extends DialogFragment
showFailedDialog(R.string.general_error); showFailedDialog(R.string.general_error);
} }
} }
}
private void initToolbar(final Toolbar toolbar) { private void initToolbar(final Toolbar toolbar) {
if (DEBUG) { if (DEBUG) {
@ -637,6 +655,10 @@ public class DownloadDialog extends DialogFragment
.show(); .show();
} }
private void launchDirectoryPicker(final ActivityResultLauncher<Intent> launcher) {
launcher.launch(StoredDirectoryHelper.getPicker(context));
}
private void prepareSelectedDownload() { private void prepareSelectedDownload() {
final StoredDirectoryHelper mainStorage; final StoredDirectoryHelper mainStorage;
final MediaFormat format; final MediaFormat format;
@ -691,11 +713,9 @@ public class DownloadDialog extends DialogFragment
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
if (dialogBinding.videoAudioGroup.getCheckedRadioButtonId() == R.id.audio_button) { if (dialogBinding.videoAudioGroup.getCheckedRadioButtonId() == R.id.audio_button) {
startActivityForResult(StoredDirectoryHelper.getPicker(context), launchDirectoryPicker(requestDownloadPickAudioFolderLauncher);
REQUEST_DOWNLOAD_PICK_AUDIO_FOLDER);
} else { } else {
startActivityForResult(StoredDirectoryHelper.getPicker(context), launchDirectoryPicker(requestDownloadPickVideoFolderLauncher);
REQUEST_DOWNLOAD_PICK_VIDEO_FOLDER);
} }
return; return;
@ -715,8 +735,8 @@ public class DownloadDialog extends DialogFragment
initialPath = Uri.parse(initialSavePath.getAbsolutePath()); initialPath = Uri.parse(initialSavePath.getAbsolutePath());
} }
startActivityForResult(StoredFileHelper.getNewPicker(context, requestDownloadSaveAsLauncher.launch(StoredFileHelper.getNewPicker(context,
filenameTmp, mimeTmp, initialPath), REQUEST_DOWNLOAD_SAVE_AS); filenameTmp, mimeTmp, initialPath));
return; return;
} }

View File

@ -9,6 +9,9 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
@ -18,6 +21,7 @@ import androidx.preference.SwitchPreferenceCompat;
import com.nononsenseapps.filepicker.Utils; import com.nononsenseapps.filepicker.Utils;
import org.schabi.newpipe.R; import org.schabi.newpipe.R;
import org.schabi.newpipe.streams.io.StoredDirectoryHelper;
import org.schabi.newpipe.util.FilePickerActivityHelper; import org.schabi.newpipe.util.FilePickerActivityHelper;
import java.io.File; import java.io.File;
@ -27,14 +31,10 @@ import java.net.URI;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import org.schabi.newpipe.streams.io.StoredDirectoryHelper;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class DownloadSettingsFragment extends BasePreferenceFragment { public class DownloadSettingsFragment extends BasePreferenceFragment {
public static final boolean IGNORE_RELEASE_ON_OLD_PATH = true; public static final boolean IGNORE_RELEASE_ON_OLD_PATH = true;
private static final int REQUEST_DOWNLOAD_VIDEO_PATH = 0x1235;
private static final int REQUEST_DOWNLOAD_AUDIO_PATH = 0x1236;
private String downloadPathVideoPreference; private String downloadPathVideoPreference;
private String downloadPathAudioPreference; private String downloadPathAudioPreference;
private String storageUseSafPreference; private String storageUseSafPreference;
@ -44,6 +44,12 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
private Preference prefStorageAsk; private Preference prefStorageAsk;
private Context ctx; private Context ctx;
private final ActivityResultLauncher<Intent> requestDownloadVideoPathLauncher =
registerForActivityResult(
new StartActivityForResult(), this::requestDownloadVideoPathResult);
private final ActivityResultLauncher<Intent> requestDownloadAudioPathLauncher =
registerForActivityResult(
new StartActivityForResult(), this::requestDownloadAudioPathResult);
@Override @Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) { public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
@ -185,7 +191,6 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
} }
final String key = preference.getKey(); final String key = preference.getKey();
final int request;
if (key.equals(storageUseSafPreference)) { if (key.equals(storageUseSafPreference)) {
if (!NewPipeSettings.useStorageAccessFramework(ctx)) { if (!NewPipeSettings.useStorageAccessFramework(ctx)) {
@ -198,43 +203,39 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
updatePreferencesSummary(); updatePreferencesSummary();
return true; return true;
} else if (key.equals(downloadPathVideoPreference)) { } else if (key.equals(downloadPathVideoPreference)) {
request = REQUEST_DOWNLOAD_VIDEO_PATH; launchDirectoryPicker(requestDownloadVideoPathLauncher);
} else if (key.equals(downloadPathAudioPreference)) { } else if (key.equals(downloadPathAudioPreference)) {
request = REQUEST_DOWNLOAD_AUDIO_PATH; launchDirectoryPicker(requestDownloadAudioPathLauncher);
} else { } else {
return super.onPreferenceTreeClick(preference); return super.onPreferenceTreeClick(preference);
} }
startActivityForResult(StoredDirectoryHelper.getPicker(ctx), request);
return true; return true;
} }
@Override private void launchDirectoryPicker(final ActivityResultLauncher<Intent> launcher) {
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) { launcher.launch(StoredDirectoryHelper.getPicker(ctx));
}
private void requestDownloadVideoPathResult(final ActivityResult result) {
requestDownloadPathResult(result, downloadPathVideoPreference);
}
private void requestDownloadAudioPathResult(final ActivityResult result) {
requestDownloadPathResult(result, downloadPathAudioPreference);
}
private void requestDownloadPathResult(final ActivityResult result, final String key) {
assureCorrectAppLanguage(getContext()); assureCorrectAppLanguage(getContext());
super.onActivityResult(requestCode, resultCode, data);
if (DEBUG) {
Log.d(TAG, "onActivityResult() called with: "
+ "requestCode = [" + requestCode + "], "
+ "resultCode = [" + resultCode + "], data = [" + data + "]"
);
}
if (resultCode != Activity.RESULT_OK) { if (result.getResultCode() != Activity.RESULT_OK) {
return; return;
} }
final String key; Uri uri = null;
if (requestCode == REQUEST_DOWNLOAD_VIDEO_PATH) { if (result.getData() != null) {
key = downloadPathVideoPreference; uri = result.getData().getData();
} else if (requestCode == REQUEST_DOWNLOAD_AUDIO_PATH) {
key = downloadPathAudioPreference;
} else {
return;
} }
Uri uri = data.getData();
if (uri == null) { if (uri == null) {
showMessageDialog(R.string.general_error, R.string.invalid_directory); showMessageDialog(R.string.general_error, R.string.invalid_directory);
return; return;

View File

@ -17,6 +17,9 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@ -44,7 +47,6 @@ import us.shandian.giga.ui.adapter.MissionAdapter;
public class MissionsFragment extends Fragment { public class MissionsFragment extends Fragment {
private static final int SPAN_SIZE = 2; private static final int SPAN_SIZE = 2;
private static final int REQUEST_DOWNLOAD_SAVE_AS = 0x1230;
private SharedPreferences mPrefs; private SharedPreferences mPrefs;
private boolean mLinear; private boolean mLinear;
@ -64,7 +66,8 @@ public class MissionsFragment extends Fragment {
private boolean mForceUpdate; private boolean mForceUpdate;
private DownloadMission unsafeMissionTarget = null; private DownloadMission unsafeMissionTarget = null;
private final ActivityResultLauncher<Intent> requestDownloadSaveAsLauncher =
registerForActivityResult(new StartActivityForResult(), this::requestDownloadSaveAsResult);
private final ServiceConnection mConnection = new ServiceConnection() { private final ServiceConnection mConnection = new ServiceConnection() {
@Override @Override
@ -254,8 +257,9 @@ public class MissionsFragment extends Fragment {
initialPath = Uri.parse(initialSavePath.getAbsolutePath()); initialPath = Uri.parse(initialSavePath.getAbsolutePath());
} }
startActivityForResult(StoredFileHelper.getNewPicker(mContext, mission.storage.getName(), requestDownloadSaveAsLauncher.launch(
mission.storage.getType(), initialPath), REQUEST_DOWNLOAD_SAVE_AS); StoredFileHelper.getNewPicker(mContext, mission.storage.getName(),
mission.storage.getType(), initialPath));
} }
@Override @Override
@ -289,18 +293,17 @@ public class MissionsFragment extends Fragment {
if (mBinder != null) mBinder.enableNotifications(true); if (mBinder != null) mBinder.enableNotifications(true);
} }
@Override private void requestDownloadSaveAsResult(final ActivityResult result) {
public void onActivityResult(int requestCode, int resultCode, Intent data) { if (result.getResultCode() != Activity.RESULT_OK) {
super.onActivityResult(requestCode, resultCode, data); return;
}
if (requestCode != REQUEST_DOWNLOAD_SAVE_AS || resultCode != Activity.RESULT_OK) return; if (unsafeMissionTarget == null || result.getData() == null) {
if (unsafeMissionTarget == null || data.getData() == null) {
return; return;
} }
try { try {
Uri fileUri = data.getData(); Uri fileUri = result.getData().getData();
if (fileUri.getAuthority() != null && FilePickerActivityHelper.isOwnFileUri(mContext, fileUri)) { if (fileUri.getAuthority() != null && FilePickerActivityHelper.isOwnFileUri(mContext, fileUri)) {
fileUri = Uri.fromFile(Utils.getFileForUri(fileUri)); fileUri = Uri.fromFile(Utils.getFileForUri(fileUri));
} }