Compare commits

...

4 Commits

Author SHA1 Message Date
adbenitez 98d711e0ca tweak createForExternal 2025-12-22 18:23:08 +01:00
copilot-swe-agent[bot] 99c848b1b7 Add clarifying comment about fallback logic
Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>
2025-12-22 16:58:38 +00:00
copilot-swe-agent[bot] fe26af88b4 Fix quick-camera button crash on devices with external SD cards
Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>
2025-12-22 16:55:15 +00:00
copilot-swe-agent[bot] 6af6ff80ba Initial plan 2025-12-22 16:51:35 +00:00
2 changed files with 21 additions and 2 deletions
@@ -122,8 +122,26 @@ public class PersistentBlobProvider {
}
public Uri createForExternal(@NonNull Context context, @NonNull String mimeType) throws IOException, IllegalStateException, NullPointerException {
File target = new File(getExternalDir(context), System.currentTimeMillis() + "." + getExtensionFromMimeType(mimeType));
return FileProviderUtil.getUriFor(context, target);
String filename = System.currentTimeMillis() + "." + getExtensionFromMimeType(mimeType);
// Try external cache first
try {
File externalDir = getExternalDir(context);
File target = new File(externalDir, filename);
return FileProviderUtil.getUriFor(context, target);
} catch (IllegalArgumentException e) {
// FileProvider doesn't support the external cache path (e.g., on removable SD card).
// Note: getExternalDir() already falls back to internal cache when external cache is null,
// but when external cache exists on a removable SD card, FileProvider may reject it.
// In that case, we explicitly use internal cache which FileProvider always supports.
Log.w(TAG, "FileProvider doesn't support external cache path, falling back to internal cache", e);
File internalDir = context.getCacheDir();
if (internalDir == null) {
throw new IOException("no cache directory available");
}
File target = new File(internalDir, filename);
return FileProviderUtil.getUriFor(context, target);
}
}
public boolean delete(@NonNull Context context, @NonNull Uri uri) {
+1
View File
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<cache-path name="cache" path="." />
<external-cache-path name="external_cache" path="." />
<external-files-path name="external_files" path="." />