forked from upstream-mirrors/OpenTracks
try appCtx to persist NextCloud URI permission
for #1080 Also fixing a missing break in a switch statement.
This commit is contained in:
+2
@@ -32,8 +32,10 @@ public class ExportServiceResultReceiver extends ResultReceiver {
|
|||||||
switch (resultCode) {
|
switch (resultCode) {
|
||||||
case RESULT_CODE_SUCCESS:
|
case RESULT_CODE_SUCCESS:
|
||||||
receiver.onExportSuccess(trackId);
|
receiver.onExportSuccess(trackId);
|
||||||
|
break;
|
||||||
case RESULT_CODE_ERROR:
|
case RESULT_CODE_ERROR:
|
||||||
receiver.onExportError(trackId);
|
receiver.onExportError(trackId);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unknown resultCode.");
|
throw new RuntimeException("Unknown resultCode.");
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-6
@@ -54,10 +54,7 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
protected void onActivityResultCustom(@NonNull Intent resultData) {
|
protected void onActivityResultCustom(@NonNull Intent resultData) {
|
||||||
Uri directoryUri = resultData.getData();
|
Uri directoryUri = resultData.getData();
|
||||||
int takeFlags = resultData.getFlags();
|
IntentUtils.persistDirectoryAccessPermission(this, directoryUri, resultData.getFlags());
|
||||||
takeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
|
||||||
getContentResolver().takePersistableUriPermission(directoryUri, takeFlags);
|
|
||||||
|
|
||||||
startActivity(createNextActivityIntent(directoryUri));
|
startActivity(createNextActivityIntent(directoryUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,11 +108,11 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
|||||||
Uri oldDirectoryUri = PreferencesUtils.getDefaultExportDirectoryUri();
|
Uri oldDirectoryUri = PreferencesUtils.getDefaultExportDirectoryUri();
|
||||||
Uri newDirectoryUri = resultData.getData();
|
Uri newDirectoryUri = resultData.getData();
|
||||||
if (oldDirectoryUri != null && !newDirectoryUri.equals(oldDirectoryUri)) {
|
if (oldDirectoryUri != null && !newDirectoryUri.equals(oldDirectoryUri)) {
|
||||||
IntentUtils.releaseDirectoryAccessPermission(getApplicationContext(), oldDirectoryUri);
|
IntentUtils.releaseDirectoryAccessPermission(this, oldDirectoryUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
PreferencesUtils.setDefaultExportDirectoryUri(newDirectoryUri);
|
PreferencesUtils.setDefaultExportDirectoryUri(newDirectoryUri);
|
||||||
IntentUtils.persistDirectoryAccessPermission(getApplicationContext(), newDirectoryUri, resultData.getFlags());
|
IntentUtils.persistDirectoryAccessPermission(this, newDirectoryUri, resultData.getFlags());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public class IntentUtils {
|
|||||||
|
|
||||||
public static void persistDirectoryAccessPermission(Context context, Uri directoryUri, int existingFlags) {
|
public static void persistDirectoryAccessPermission(Context context, Uri directoryUri, int existingFlags) {
|
||||||
int newFlags = existingFlags & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
int newFlags = existingFlags & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||||
context.getContentResolver().takePersistableUriPermission(directoryUri, newFlags);
|
context.getApplicationContext().getContentResolver().takePersistableUriPermission(directoryUri, newFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void releaseDirectoryAccessPermission(Context context, final Uri documentUri) {
|
public static void releaseDirectoryAccessPermission(Context context, final Uri documentUri) {
|
||||||
@@ -85,7 +85,7 @@ public class IntentUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
context.getContentResolver().getPersistedUriPermissions().stream()
|
context.getApplicationContext().getContentResolver().getPersistedUriPermissions().stream()
|
||||||
.map(UriPermission::getUri)
|
.map(UriPermission::getUri)
|
||||||
.filter(documentUri::equals)
|
.filter(documentUri::equals)
|
||||||
.forEach(u -> context.getContentResolver().releasePersistableUriPermission(u, 0));
|
.forEach(u -> context.getContentResolver().releasePersistableUriPermission(u, 0));
|
||||||
@@ -96,7 +96,7 @@ public class IntentUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return DocumentFile.fromTreeUri(context, directoryUri);
|
return DocumentFile.fromTreeUri(context.getApplicationContext(), directoryUri);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.w(TAG, "Could not decode directory: " + e.getMessage());
|
Log.w(TAG, "Could not decode directory: " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user