aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaj Yengisetty <rajesh@cyngn.com>2014-12-01 11:06:34 -0800
committerRajesh Yengisetty <rajesh@cyngn.com>2014-12-01 22:05:51 +0000
commit0632947d4f0b8dc8e2fccad0b02917e1b947d95b (patch)
tree7fb1d2af54b815e8160356c4ff2b875b882b8e02
parentf804e36794ea23473d51f987ac6cc3a6899f7e12 (diff)
downloadandroid_packages_apps_CMFileManager-0632947d4f0b8dc8e2fccad0b02917e1b947d95b.tar.gz
android_packages_apps_CMFileManager-0632947d4f0b8dc8e2fccad0b02917e1b947d95b.tar.bz2
android_packages_apps_CMFileManager-0632947d4f0b8dc8e2fccad0b02917e1b947d95b.zip
CMFileManager: Fix force close when sharing more than one file at a time
Change-Id: I64eb78ad4a2bbbe5626c0c93c4a80e0b8b97777b
-rw-r--r--src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java b/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java
index 01020622..47be24ee 100644
--- a/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java
+++ b/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java
@@ -509,10 +509,25 @@ public final class IntentsActionPolicy extends ActionsPolicy {
String authority = null;
if (uri != null) {
authority = uri.getAuthority();
+ grantSecureAccess(intent, authority, ri, uri);
} else if (intent.getExtras() != null) {
- uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM);
- authority = uri.getAuthority();
+ Object obj = intent.getExtras().get(Intent.EXTRA_STREAM);
+ if (obj instanceof Uri) {
+ uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM);
+ authority = uri.getAuthority();
+ grantSecureAccess(intent, authority, ri, uri);
+ } else if (obj instanceof ArrayList) {
+ ArrayList<Uri> uris = (ArrayList<Uri>) intent.getExtras().get(Intent.EXTRA_STREAM);
+ for (Uri u : uris) {
+ authority = u.getAuthority();
+ grantSecureAccess(intent, authority, ri, u);
+ }
+ }
}
+ }
+
+ private static final void grantSecureAccess(Intent intent, String authority, ResolveInfo ri,
+ Uri uri) {
if (authority != null && authority.equals(SecureResourceProvider.AUTHORITY)) {
boolean isInternalEditor = isInternalEditor(ri);
if (isInternalEditor) {