bugs fixes

* fix storage warning dialogs created on invalid contexts
* implement mkdirs in StoredDirectoryHelper
This commit is contained in:
kapodamy 2019-06-14 12:19:50 -03:00
parent cdc8fe86ce
commit ac5e2e0532
4 changed files with 80 additions and 28 deletions

View file

@ -144,6 +144,52 @@ public class StoredDirectoryHelper {
return docTree == null ? ioTree.exists() : docTree.exists();
}
/**
* Indicates whatever if is possible access using the {@code java.io} API
*
* @return {@code true} for Java I/O API, otherwise, {@code false} for Storage Access Framework
*/
public boolean isDirect() {
return docTree == null;
}
/**
* Only using Java I/O. Creates the directory named by this abstract pathname, including any
* necessary but nonexistent parent directories. Note that if this
* operation fails it may have succeeded in creating some of the necessary
* parent directories.
*
* @return <code>true</code> if and only if the directory was created,
* along with all necessary parent directories or already exists; <code>false</code>
* otherwise
*/
public boolean mkdirs() {
if (docTree == null) {
return ioTree.exists() || ioTree.mkdirs();
}
if (docTree.exists()) return true;
try {
DocumentFile parent;
String child = docTree.getName();
while (true) {
parent = docTree.getParentFile();
if (parent == null || child == null) break;
if (parent.exists()) return true;
parent.createDirectory(child);
child = parent.getName();// for the next iteration
}
} catch (Exception e) {
// no more parent directories or unsupported by the storage provider
}
return false;
}
public String getTag() {
return tag;
}

View file

@ -270,33 +270,6 @@ public class DownloadManagerService extends Service {
Toast.makeText(this, "Permission denied (write)", Toast.LENGTH_SHORT).show();
}
// Check download save paths
String msg = "";
if (mManager.mMainStorageVideo == null)
msg += getString(R.string.download_path_title);
else if (mManager.mMainStorageAudio == null)
msg += getString(R.string.download_path_audio_title);
if (!msg.isEmpty()) {
String title;
if (mManager.mMainStorageVideo == null && mManager.mMainStorageAudio == null) {
title = getString(R.string.general_error);
msg = getString(R.string.no_available_dir) + ":\n" + msg;
} else {
title = msg;
msg = getString(R.string.no_available_dir);
}
new AlertDialog.Builder(this)
.setPositiveButton(android.R.string.ok, null)
.setTitle(title)
.setMessage(msg)
.create()
.show();
}
return mBinder;
}