diff options
author | Raj Yengisetty <rajesh@cyngn.com> | 2014-12-01 11:06:34 -0800 |
---|---|---|
committer | Rajesh Yengisetty <rajesh@cyngn.com> | 2014-12-01 22:05:51 +0000 |
commit | 0632947d4f0b8dc8e2fccad0b02917e1b947d95b (patch) | |
tree | 7fb1d2af54b815e8160356c4ff2b875b882b8e02 | |
parent | f804e36794ea23473d51f987ac6cc3a6899f7e12 (diff) | |
download | android_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.java | 19 |
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) { |