try appCtx to persist NextCloud URI permission

for #1080
Also fixing a missing break in a switch statement.
This commit is contained in:
Peter Storch
2022-02-21 21:47:15 +01:00
parent 6fe38453b3
commit b5acfa022d
3 changed files with 8 additions and 9 deletions
@@ -32,8 +32,10 @@ public class ExportServiceResultReceiver extends ResultReceiver {
switch (resultCode) {
case RESULT_CODE_SUCCESS:
receiver.onExportSuccess(trackId);
break;
case RESULT_CODE_ERROR:
receiver.onExportError(trackId);
break;
default:
throw new RuntimeException("Unknown resultCode.");
}
@@ -54,10 +54,7 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
protected void onActivityResultCustom(@NonNull Intent resultData) {
Uri directoryUri = resultData.getData();
int takeFlags = resultData.getFlags();
takeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(directoryUri, takeFlags);
IntentUtils.persistDirectoryAccessPermission(this, directoryUri, resultData.getFlags());
startActivity(createNextActivityIntent(directoryUri));
}
@@ -111,11 +108,11 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
Uri oldDirectoryUri = PreferencesUtils.getDefaultExportDirectoryUri();
Uri newDirectoryUri = resultData.getData();
if (oldDirectoryUri != null && !newDirectoryUri.equals(oldDirectoryUri)) {
IntentUtils.releaseDirectoryAccessPermission(getApplicationContext(), oldDirectoryUri);
IntentUtils.releaseDirectoryAccessPermission(this, oldDirectoryUri);
}
PreferencesUtils.setDefaultExportDirectoryUri(newDirectoryUri);
IntentUtils.persistDirectoryAccessPermission(getApplicationContext(), newDirectoryUri, resultData.getFlags());
IntentUtils.persistDirectoryAccessPermission(this, newDirectoryUri, resultData.getFlags());
}
@Override
@@ -77,7 +77,7 @@ public class IntentUtils {
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);
context.getContentResolver().takePersistableUriPermission(directoryUri, newFlags);
context.getApplicationContext().getContentResolver().takePersistableUriPermission(directoryUri, newFlags);
}
public static void releaseDirectoryAccessPermission(Context context, final Uri documentUri) {
@@ -85,7 +85,7 @@ public class IntentUtils {
return;
}
context.getContentResolver().getPersistedUriPermissions().stream()
context.getApplicationContext().getContentResolver().getPersistedUriPermissions().stream()
.map(UriPermission::getUri)
.filter(documentUri::equals)
.forEach(u -> context.getContentResolver().releasePersistableUriPermission(u, 0));
@@ -96,7 +96,7 @@ public class IntentUtils {
return null;
}
try {
return DocumentFile.fromTreeUri(context, directoryUri);
return DocumentFile.fromTreeUri(context.getApplicationContext(), directoryUri);
} catch (Exception e) {
Log.w(TAG, "Could not decode directory: " + e.getMessage());
}