forked from upstream-mirrors/OpenTracks
Bugfix: for export all write permissions are required.
Android 11 enforces this (and it is good practice). Fixes #439.
This commit is contained in:
+15
-5
@@ -21,7 +21,7 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
|
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
configureDirectoryChooserIntent(intent);
|
||||||
|
|
||||||
startActivityForResult(intent, DIRECTORY_PICKER_REQUEST_CODE);
|
startActivityForResult(intent, DIRECTORY_PICKER_REQUEST_CODE);
|
||||||
}
|
}
|
||||||
@@ -33,19 +33,23 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
|||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
Uri directoryUri = resultData.getData();
|
Uri directoryUri = resultData.getData();
|
||||||
|
|
||||||
startActivity(createIntent(directoryUri));
|
startActivity(createNextActivityIntent(directoryUri));
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Intent createIntent(Uri directoryUri);
|
protected void configureDirectoryChooserIntent(Intent intent) {
|
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract Intent createNextActivityIntent(Uri directoryUri);
|
||||||
|
|
||||||
|
|
||||||
public static class ImportDirectoryChooserActivity extends DirectoryChooserActivity {
|
public static class ImportDirectoryChooserActivity extends DirectoryChooserActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Intent createIntent(Uri directoryUri) {
|
protected Intent createNextActivityIntent(Uri directoryUri) {
|
||||||
Intent intent = IntentUtils.newIntent(this, ImportActivity.class);
|
Intent intent = IntentUtils.newIntent(this, ImportActivity.class);
|
||||||
intent.putExtra(ImportActivity.EXTRA_DIRECTORY_URI_KEY, directoryUri);
|
intent.putExtra(ImportActivity.EXTRA_DIRECTORY_URI_KEY, directoryUri);
|
||||||
return intent;
|
return intent;
|
||||||
@@ -55,11 +59,17 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
|||||||
public static class ExportDirectoryChooserActivity extends DirectoryChooserActivity {
|
public static class ExportDirectoryChooserActivity extends DirectoryChooserActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Intent createIntent(Uri directoryUri) {
|
protected Intent createNextActivityIntent(Uri directoryUri) {
|
||||||
Intent intent = IntentUtils.newIntent(this, ExportActivity.class);
|
Intent intent = IntentUtils.newIntent(this, ExportActivity.class);
|
||||||
intent.putExtra(ExportActivity.EXTRA_DIRECTORY_URI_KEY, directoryUri);
|
intent.putExtra(ExportActivity.EXTRA_DIRECTORY_URI_KEY, directoryUri);
|
||||||
intent.putExtra(ExportActivity.EXTRA_TRACKFILEFORMAT_KEY, PreferencesUtils.getExportTrackFileFormat(this));
|
intent.putExtra(ExportActivity.EXTRA_TRACKFILEFORMAT_KEY, PreferencesUtils.getExportTrackFileFormat(this));
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void configureDirectoryChooserIntent(Intent intent) {
|
||||||
|
super.configureDirectoryChooserIntent(intent);
|
||||||
|
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user