aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2016-01-04 00:32:44 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2016-01-04 00:32:44 +0100
commit4057c97bd2d6be047f5fbafe76d70c32971aa937 (patch)
tree32311abe1b75f219426cd921a2eba8624b1624c6 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util
parent3b54c82dc031f7deeba2601a183819b7f3ec1128 (diff)
downloadopen-keychain-4057c97bd2d6be047f5fbafe76d70c32971aa937.tar.gz
open-keychain-4057c97bd2d6be047f5fbafe76d70c32971aa937.tar.bz2
open-keychain-4057c97bd2d6be047f5fbafe76d70c32971aa937.zip
Fallback for ACTION_OPEN_DOCUMENT, hopefully fixes #1625
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FileHelper.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FileHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FileHelper.java
index 1c413034e..67576f88e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FileHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FileHelper.java
@@ -47,6 +47,7 @@ import android.provider.OpenableColumns;
import android.support.v4.app.Fragment;
import android.widget.Toast;
+import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
/** This class offers a number of helper functions for saving documents.
@@ -94,7 +95,7 @@ public class FileHelper {
public static void openDocument(Fragment fragment, Uri last, String mimeType, boolean multiple, int requestCode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- openDocumentKitKat(fragment, mimeType, multiple, requestCode);
+ openDocumentKitKat(fragment, last, mimeType, multiple, requestCode);
} else {
openDocumentPreKitKat(fragment, last, mimeType, multiple, requestCode);
}
@@ -125,14 +126,22 @@ public class FileHelper {
/** Opens the storage browser on Android 4.4 or later for opening a file */
@TargetApi(Build.VERSION_CODES.KITKAT)
- private static void openDocumentKitKat(Fragment fragment, String mimeType, boolean multiple, int requestCode) {
+ private static void openDocumentKitKat(Fragment fragment, Uri last, String mimeType, boolean multiple, int requestCode) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(mimeType);
// Note: This is not documented, but works: Show the Internal Storage menu item in the drawer!
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multiple);
- fragment.startActivityForResult(intent, requestCode);
+
+ try {
+ fragment.startActivityForResult(intent, requestCode);
+ } catch (ActivityNotFoundException e) {
+ // NOTE: Looks like some Android distributions are missing the ACTION_OPEN_DOCUMENT intent
+ // even on Android 4.4, see https://github.com/open-keychain/open-keychain/issues/1625
+ Log.w(Constants.TAG, "Couldn't start ACTION_OPEN_DOCUMENT intent, no activity found, falling back to ");
+ openDocumentPreKitKat(fragment, last, mimeType, multiple, requestCode);
+ }
}
public static String getFilename(Context context, Uri uri) {