diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2016-01-04 00:32:44 +0100 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2016-01-04 00:32:44 +0100 |
commit | 4057c97bd2d6be047f5fbafe76d70c32971aa937 (patch) | |
tree | 32311abe1b75f219426cd921a2eba8624b1624c6 /OpenKeychain | |
parent | 3b54c82dc031f7deeba2601a183819b7f3ec1128 (diff) | |
download | open-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')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FileHelper.java | 15 |
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) { |