Change handling of Uri and DocumentFile handling for #1080

The Uris from Intent.getData() and DocumentFile.getUri() seems to be different. I think PreferencesUtils should only work with the original Uri as well as the permission handling logic.

IntentUtils.toDocumentFile can be used to convert it to a DocumentFile later on to actually work with.

Adds "No file manager found" message if no activity with OPEN_DOCUMENT_TREE is found. #1095

Removed deprecation of `startActivityForResult`.
This commit is contained in:
Peter Storch
2022-01-09 19:34:19 +01:00
parent f64c1feb1a
commit 1099102e29
6 changed files with 74 additions and 64 deletions
@@ -497,9 +497,9 @@ public class PreferencesUtils {
}
public static boolean shouldInstantExportAfterWorkout(Context context) {
public static boolean shouldInstantExportAfterWorkout() {
final boolean INSTANT_POST_WORKOUT_EXPORT_DEFAULT = resources.getBoolean(R.bool.post_workout_export_enabled_default);
return getBoolean(R.string.post_workout_export_enabled_key, INSTANT_POST_WORKOUT_EXPORT_DEFAULT) && isDefaultExportDirectoryUri(context);
return getBoolean(R.string.post_workout_export_enabled_key, INSTANT_POST_WORKOUT_EXPORT_DEFAULT) && isDefaultExportDirectoryUri();
}
public static TrackFileFormat getExportTrackFileFormat() {
@@ -535,26 +535,29 @@ public class PreferencesUtils {
PreferenceManager.setDefaultValues(context, R.xml.settings, readAgain);
}
public static DocumentFile getDefaultExportDirectoryUri(Context context) {
public static Uri getDefaultExportDirectoryUri() {
String singleExportDirectory = getString(R.string.settings_default_export_directory_key, null);
if (singleExportDirectory == null) {
return null;
}
try {
return DocumentFile.fromTreeUri(context, Uri.parse(singleExportDirectory));
Log.d(TAG, "DefaultExportDirectoryUri: " + singleExportDirectory);
return Uri.parse(singleExportDirectory);
} catch (Exception e) {
Log.w(TAG, "Could not decode default export directory: " + e.getMessage());
Log.w(TAG, "Could not parse default export directory Uri: " + e.getMessage());
}
return null;
}
public static void setDefaultExportDirectoryUri(Uri directoryUri) {
String value = directoryUri != null ? directoryUri.toString() : null;
Log.d(TAG, "Set ExportDirectoryUri: " + directoryUri);
setString(R.string.settings_default_export_directory_key, value);
}
public static boolean isDefaultExportDirectoryUri(Context context) {
return getDefaultExportDirectoryUri(context) != null;
public static boolean isDefaultExportDirectoryUri() {
return getDefaultExportDirectoryUri() != null;
}
public static int getLayoutColumnsByDefault() {