diff options
| author | Dianne Hackborn <hackbod@google.com> | 2010-08-31 19:06:25 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2010-08-31 19:06:25 -0700 |
| commit | 2394c164a76f6d3f8ad9f1c1517f58f72adab9d7 (patch) | |
| tree | f0cee0035a0983071d2cdd713d77eacc156dab36 | |
| parent | 633524731b2a7a0871aabfabc60459ac27f0e5ab (diff) | |
| parent | ec438e1448ebc578ee5a4c4beb1e26292cdedd6e (diff) | |
| download | frameworks_base-2394c164a76f6d3f8ad9f1c1517f58f72adab9d7.zip frameworks_base-2394c164a76f6d3f8ad9f1c1517f58f72adab9d7.tar.gz frameworks_base-2394c164a76f6d3f8ad9f1c1517f58f72adab9d7.tar.bz2 | |
am ec438e14: am 361199b5: Add PackageManager API to get information about a provider component.
Merge commit 'ec438e1448ebc578ee5a4c4beb1e26292cdedd6e'
* commit 'ec438e1448ebc578ee5a4c4beb1e26292cdedd6e':
Add PackageManager API to get information about a provider component.
| -rw-r--r-- | api/current.xml | 40 | ||||
| -rw-r--r-- | core/java/android/app/ContextImpl.java | 15 | ||||
| -rw-r--r-- | core/java/android/content/pm/IPackageManager.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageManager.java | 46 | ||||
| -rw-r--r-- | services/java/com/android/server/PackageManagerService.java | 12 | ||||
| -rw-r--r-- | test-runner/src/android/test/mock/MockPackageManager.java | 6 |
6 files changed, 106 insertions, 15 deletions
diff --git a/api/current.xml b/api/current.xml index c2ab1a9..4273360 100644 --- a/api/current.xml +++ b/api/current.xml @@ -54625,7 +54625,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="className" type="android.content.ComponentName"> +<parameter name="component" type="android.content.ComponentName"> </parameter> <parameter name="flags" type="int"> </parameter> @@ -55021,6 +55021,23 @@ <parameter name="flags" type="int"> </parameter> </method> +<method name="getProviderInfo" + return="android.content.pm.ProviderInfo" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="component" type="android.content.ComponentName"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +<exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException"> +</exception> +</method> <method name="getReceiverInfo" return="android.content.pm.ActivityInfo" abstract="true" @@ -55031,7 +55048,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="className" type="android.content.ComponentName"> +<parameter name="component" type="android.content.ComponentName"> </parameter> <parameter name="flags" type="int"> </parameter> @@ -55093,7 +55110,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="className" type="android.content.ComponentName"> +<parameter name="component" type="android.content.ComponentName"> </parameter> <parameter name="flags" type="int"> </parameter> @@ -167123,6 +167140,23 @@ <parameter name="flags" type="int"> </parameter> </method> +<method name="getProviderInfo" + return="android.content.pm.ProviderInfo" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="className" type="android.content.ComponentName"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +<exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException"> +</exception> +</method> <method name="getReceiverInfo" return="android.content.pm.ActivityInfo" abstract="false" diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 00d769f..18ecc24 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1869,6 +1869,21 @@ class ContextImpl extends Context { } @Override + public ProviderInfo getProviderInfo(ComponentName className, int flags) + throws NameNotFoundException { + try { + ProviderInfo pi = mPM.getProviderInfo(className, flags); + if (pi != null) { + return pi; + } + } catch (RemoteException e) { + throw new RuntimeException("Package manager has died", e); + } + + throw new NameNotFoundException(className.toString()); + } + + @Override public String[] getSystemSharedLibraryNames() { try { return mPM.getSystemSharedLibraryNames(); diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 160a481..4cff3bb 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -68,6 +68,8 @@ interface IPackageManager { ServiceInfo getServiceInfo(in ComponentName className, int flags); + ProviderInfo getProviderInfo(in ComponentName className, int flags); + int checkPermission(String permName, String pkgName); int checkUidPermission(String permName, int uid); diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index b14555a..7f166cf 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -996,9 +996,9 @@ public abstract class PackageManager { * <p>Throws {@link NameNotFoundException} if an activity with the given * class name can not be found on the system. * - * @param className The full name (i.e. - * com.google.apps.contacts.ContactsList) of an Activity - * class. + * @param component The full component name (i.e. + * com.google.apps.contacts/com.google.apps.contacts.ContactsList) of an Activity + * class. * @param flags Additional option flags. Use any combination of * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, * to modify the data (in ApplicationInfo) returned. @@ -1009,7 +1009,7 @@ public abstract class PackageManager { * @see #GET_META_DATA * @see #GET_SHARED_LIBRARY_FILES */ - public abstract ActivityInfo getActivityInfo(ComponentName className, + public abstract ActivityInfo getActivityInfo(ComponentName component, int flags) throws NameNotFoundException; /** @@ -1019,9 +1019,9 @@ public abstract class PackageManager { * <p>Throws {@link NameNotFoundException} if a receiver with the given * class name can not be found on the system. * - * @param className The full name (i.e. - * com.google.apps.contacts.CalendarAlarm) of a Receiver - * class. + * @param component The full component name (i.e. + * com.google.apps.calendar/com.google.apps.calendar.CalendarAlarm) of a Receiver + * class. * @param flags Additional option flags. Use any combination of * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, * to modify the data returned. @@ -1032,7 +1032,7 @@ public abstract class PackageManager { * @see #GET_META_DATA * @see #GET_SHARED_LIBRARY_FILES */ - public abstract ActivityInfo getReceiverInfo(ComponentName className, + public abstract ActivityInfo getReceiverInfo(ComponentName component, int flags) throws NameNotFoundException; /** @@ -1042,9 +1042,9 @@ public abstract class PackageManager { * <p>Throws {@link NameNotFoundException} if a service with the given * class name can not be found on the system. * - * @param className The full name (i.e. - * com.google.apps.media.BackgroundPlayback) of a Service - * class. + * @param component The full component name (i.e. + * com.google.apps.media/com.google.apps.media.BackgroundPlayback) of a Service + * class. * @param flags Additional option flags. Use any combination of * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, * to modify the data returned. @@ -1054,7 +1054,29 @@ public abstract class PackageManager { * @see #GET_META_DATA * @see #GET_SHARED_LIBRARY_FILES */ - public abstract ServiceInfo getServiceInfo(ComponentName className, + public abstract ServiceInfo getServiceInfo(ComponentName component, + int flags) throws NameNotFoundException; + + /** + * Retrieve all of the information we know about a particular content + * provider class. + * + * <p>Throws {@link NameNotFoundException} if a provider with the given + * class name can not be found on the system. + * + * @param component The full component name (i.e. + * com.google.providers.media/com.google.providers.media.MediaProvider) of a + * ContentProvider class. + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * to modify the data returned. + * + * @return ProviderInfo containing information about the service. + * + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + */ + public abstract ProviderInfo getProviderInfo(ComponentName component, int flags) throws NameNotFoundException; /** diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 12ae4ff..1bfeb79 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -1615,6 +1615,18 @@ class PackageManagerService extends IPackageManager.Stub { return null; } + public ProviderInfo getProviderInfo(ComponentName component, int flags) { + synchronized (mPackages) { + PackageParser.Provider p = mProvidersByComponent.get(component); + if (Config.LOGV) Log.v( + TAG, "getProviderInfo " + component + ": " + p); + if (p != null && mSettings.isEnabledLP(p.info, flags)) { + return PackageParser.generateProviderInfo(p, flags); + } + } + return null; + } + public String[] getSystemSharedLibraryNames() { Set<String> libSet; synchronized (mPackages) { diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index e96173b..f0cbaa0 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -127,6 +127,12 @@ public class MockPackageManager extends PackageManager { } @Override + public ProviderInfo getProviderInfo(ComponentName className, int flags) + throws NameNotFoundException { + throw new UnsupportedOperationException(); + } + + @Override public List<PackageInfo> getInstalledPackages(int flags) { throw new UnsupportedOperationException(); } |
