correct deleting files on SD card
This commit is contained in:
parent
20fb58ddbe
commit
4b56761751
|
@ -11,44 +11,46 @@ import android.widget.Toast
|
|||
import com.simplemobiletools.filepicker.extensions.getSDCardPath
|
||||
import java.util.regex.Pattern
|
||||
|
||||
object Utils {
|
||||
fun getFilename(path: String): String {
|
||||
return path.substring(path.lastIndexOf("/") + 1)
|
||||
}
|
||||
|
||||
fun getFileExtension(fileName: String): String {
|
||||
return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length).toLowerCase()
|
||||
}
|
||||
|
||||
fun showToast(context: Context, resId: Int) {
|
||||
Toast.makeText(context, context.resources.getString(resId), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
fun hasStoragePermission(cxt: Context): Boolean {
|
||||
return ContextCompat.checkSelfPermission(cxt, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
|
||||
}
|
||||
|
||||
fun isNameValid(name: String): Boolean {
|
||||
val pattern = Pattern.compile("^[-_.A-Za-z0-9 ]+$")
|
||||
val matcher = pattern.matcher(name)
|
||||
return matcher.matches()
|
||||
}
|
||||
|
||||
fun needsStupidWritePermissions(context: Context, path: String) = isPathOnSD(context, path) && isKitkat()
|
||||
|
||||
fun isPathOnSD(context: Context, path: String): Boolean {
|
||||
return path.startsWith(context.getSDCardPath())
|
||||
}
|
||||
|
||||
fun isKitkat() = Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT
|
||||
|
||||
fun getFileDocument(context: Context, path: String): DocumentFile {
|
||||
val relativePath = path.substring(context.getSDCardPath().length + 1)
|
||||
var document = DocumentFile.fromTreeUri(context, Uri.parse(Config.newInstance(context).treeUri))
|
||||
val parts = relativePath.split("/")
|
||||
for (part in parts) {
|
||||
document = document.findFile(part)
|
||||
class Utils {
|
||||
companion object {
|
||||
fun getFilename(path: String): String {
|
||||
return path.substring(path.lastIndexOf("/") + 1)
|
||||
}
|
||||
|
||||
fun getFileExtension(fileName: String): String {
|
||||
return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length).toLowerCase()
|
||||
}
|
||||
|
||||
fun showToast(context: Context, resId: Int) {
|
||||
Toast.makeText(context, context.resources.getString(resId), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
fun hasStoragePermission(cxt: Context): Boolean {
|
||||
return ContextCompat.checkSelfPermission(cxt, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
|
||||
}
|
||||
|
||||
fun isNameValid(name: String): Boolean {
|
||||
val pattern = Pattern.compile("^[-_.A-Za-z0-9 ]+$")
|
||||
val matcher = pattern.matcher(name)
|
||||
return matcher.matches()
|
||||
}
|
||||
|
||||
fun needsStupidWritePermissions(context: Context, path: String) = isPathOnSD(context, path) && isKitkat()
|
||||
|
||||
fun isPathOnSD(context: Context, path: String): Boolean {
|
||||
return path.startsWith(context.getSDCardPath())
|
||||
}
|
||||
|
||||
fun isKitkat() = Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT
|
||||
|
||||
fun getFileDocument(context: Context, path: String): DocumentFile {
|
||||
val relativePath = path.substring(context.getSDCardPath().length + 1)
|
||||
var document = DocumentFile.fromTreeUri(context, Uri.parse(Config.newInstance(context).treeUri))
|
||||
val parts = relativePath.split("/")
|
||||
for (part in parts) {
|
||||
document = document.findFile(part)
|
||||
}
|
||||
return document
|
||||
}
|
||||
return document
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.os.Parcelable;
|
|||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.provider.DocumentFile;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.ActionMode;
|
||||
|
@ -137,7 +138,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
|||
if (files != null) {
|
||||
for (File file : files) {
|
||||
final String curPath = file.getAbsolutePath();
|
||||
final String curName = Utils.INSTANCE.getFilename(curPath);
|
||||
final String curName = Utils.Companion.getFilename(curPath);
|
||||
if (!mShowHidden && curName.startsWith("."))
|
||||
continue;
|
||||
|
||||
|
@ -181,7 +182,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
|||
} else {
|
||||
final String path = item.getPath();
|
||||
final File file = new File(path);
|
||||
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(Utils.INSTANCE.getFileExtension(path));
|
||||
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(Utils.Companion.getFileExtension(path));
|
||||
if (mimeType == null)
|
||||
mimeType = "text/plain";
|
||||
|
||||
|
@ -192,7 +193,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
|||
startActivity(intent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
if (!tryGenericMimeType(intent, mimeType, file)) {
|
||||
Utils.INSTANCE.showToast(getContext(), R.string.no_app_found);
|
||||
Utils.Companion.showToast(getContext(), R.string.no_app_found);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -302,7 +303,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
|||
}
|
||||
|
||||
if (uris.isEmpty()) {
|
||||
Utils.INSTANCE.showToast(getContext(), R.string.no_files_selected);
|
||||
Utils.Companion.showToast(getContext(), R.string.no_files_selected);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -467,7 +468,12 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
|||
}
|
||||
}
|
||||
|
||||
item.delete();
|
||||
if (Utils.Companion.needsStupidWritePermissions(getContext(), item.getAbsolutePath())) {
|
||||
final DocumentFile document = Utils.Companion.getFileDocument(getContext(), item.getAbsolutePath());
|
||||
document.delete();
|
||||
} else {
|
||||
item.delete();
|
||||
}
|
||||
MediaScannerConnection.scanFile(getContext(), new String[]{item.getAbsolutePath()}, null, null);
|
||||
}
|
||||
|
||||
|
@ -493,7 +499,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
|||
|
||||
@Override
|
||||
public void copyFailed() {
|
||||
Utils.INSTANCE.showToast(getContext(), R.string.copy_failed);
|
||||
Utils.Companion.showToast(getContext(), R.string.copy_failed);
|
||||
}
|
||||
|
||||
public interface ItemInteractionListener {
|
||||
|
|
Loading…
Reference in New Issue