aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-03-09 18:59:15 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2015-03-09 18:59:15 +0100
commitcc66435e38248880fee3af795619b5794b65d222 (patch)
tree4ae61704436f8fc54e12a2d666dc6484054b68f0 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java
parent7c22fc843b7f00f63c0f85cbd3565700b5e73698 (diff)
downloadopen-keychain-cc66435e38248880fee3af795619b5794b65d222.tar.gz
open-keychain-cc66435e38248880fee3af795619b5794b65d222.tar.bz2
open-keychain-cc66435e38248880fee3af795619b5794b65d222.zip
Some fixes for delete after encryption
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java49
1 files changed, 27 insertions, 22 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java
index 07462b4ff..c4b437593 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java
@@ -28,8 +28,10 @@ import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;
+import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.util.FileHelper;
+import org.sufficientlysecure.keychain.util.Log;
import java.io.File;
@@ -69,41 +71,44 @@ public class DeleteFileDialogFragment extends DialogFragment {
@Override
public void onClick(DialogInterface dialog, int id) {
dismiss();
- String scheme = deleteUri.getScheme();
- if(scheme.equals(ContentResolver.SCHEME_FILE)) {
- if(new File(deleteUri.getPath()).delete()) {
- Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show();
- return;
- }
- }
- else if(scheme.equals(ContentResolver.SCHEME_CONTENT)) {
- // We can not securely delete Uris, so just use usual delete on them
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ // NOTE: Use Toasts, not Snackbars. When sharing to another application snackbars
+ // would not show up!
+
+ // Use DocumentsContract on Android >= 4.4
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ try {
if (DocumentsContract.deleteDocument(getActivity().getContentResolver(), deleteUri)) {
- Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show();
+ Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful,
+ deleteFilename), Toast.LENGTH_LONG).show();
return;
}
+ } catch (UnsupportedOperationException e) {
+ Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e);
}
+ }
+ try {
if (getActivity().getContentResolver().delete(deleteUri, null, null) > 0) {
- Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show();
- return;
- }
-
- // some Uri's a ContentResolver fails to delete is handled by the java.io.File's delete
- // via the path of the Uri
- if(new File(deleteUri.getPath()).delete()) {
- Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show();
+ Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful,
+ deleteFilename), Toast.LENGTH_LONG).show();
return;
}
+ } catch (UnsupportedOperationException e) {
+ Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e);
}
- Toast.makeText(getActivity(), getActivity().getString(R.string.error_file_delete_failed,
- deleteFilename), Toast.LENGTH_SHORT).show();
+ // some Uri's a ContentResolver fails to delete is handled by the java.io.File's delete
+ // via the path of the Uri
+ if (new File(deleteUri.getPath()).delete()) {
+ Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful,
+ deleteFilename), Toast.LENGTH_LONG).show();
+ return;
+ }
// Note: We can't delete every file...
- // If possible we should find out if deletion is possible before even showing the option to do so.
+ Toast.makeText(getActivity(), getActivity().getString(R.string.error_file_delete_failed,
+ deleteFilename), Toast.LENGTH_LONG).show();
}
});
alert.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {