diff options
author | Dianne Hackborn <hackbod@google.com> | 2010-09-27 12:42:34 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-27 12:42:34 -0700 |
commit | d8691d73d158acd9ffc63748126e822afd656707 (patch) | |
tree | 41c330928c6672392c6cb870289ed9e42028128e /services/java/com | |
parent | 14a288da6a372230d9af41da12241fe500eec837 (diff) | |
parent | 8313fc7e94e46e5cc09f457a15a771a325b9f74f (diff) | |
download | frameworks_base-d8691d73d158acd9ffc63748126e822afd656707.zip frameworks_base-d8691d73d158acd9ffc63748126e822afd656707.tar.gz frameworks_base-d8691d73d158acd9ffc63748126e822afd656707.tar.bz2 |
Merge "Allow all apps to call ContentResolver.getType()." into gingerbread
Diffstat (limited to 'services/java/com')
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 32 | ||||
-rw-r--r-- | services/java/com/android/server/am/UriPermission.java | 4 |
2 files changed, 34 insertions, 2 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 223d77d..22cd8ff 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -5592,6 +5592,38 @@ public final class ActivityManagerService extends ActivityManagerNative } } + /** + * Allows app to retrieve the MIME type of a URI without having permission + * to access its content provider. + * + * CTS tests for this functionality can be run with "runtest cts-appsecurity". + * + * Test cases are at cts/tests/appsecurity-tests/test-apps/UsePermissionDiffCert/ + * src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java + */ + public String getProviderMimeType(Uri uri) { + final String name = uri.getAuthority(); + final long ident = Binder.clearCallingIdentity(); + ContentProviderHolder holder = null; + + try { + holder = getContentProviderExternal(name); + if (holder != null) { + return holder.provider.getType(uri); + } + } catch (RemoteException e) { + Log.w(TAG, "Content provider dead retrieving " + uri, e); + return null; + } finally { + if (holder != null) { + removeContentProviderExternal(name); + } + Binder.restoreCallingIdentity(ident); + } + + return null; + } + // ========================================================= // GLOBAL MANAGEMENT // ========================================================= diff --git a/services/java/com/android/server/am/UriPermission.java b/services/java/com/android/server/am/UriPermission.java index 0cb6943..e3347cb 100644 --- a/services/java/com/android/server/am/UriPermission.java +++ b/services/java/com/android/server/am/UriPermission.java @@ -27,8 +27,8 @@ import java.util.HashSet; * * CTS tests for this functionality can be run with "runtest cts-appsecurity". * - * Test cases are at cts/tests/appsecurity-tests/test-apps/UsePermissionDiffCert - * /src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java + * Test cases are at cts/tests/appsecurity-tests/test-apps/UsePermissionDiffCert/ + * src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java */ class UriPermission { final int uid; |