am 361199b5: Add PackageManager API to get information about a provider component.

Merge commit '361199b5e742c6635d4d7a03de6cf37b31cf442c' into gingerbread-plus-aosp

* commit '361199b5e742c6635d4d7a03de6cf37b31cf442c':
  Add PackageManager API to get information about a provider component.
This commit is contained in:
Dianne Hackborn
2010-08-31 19:03:36 -07:00
committed by Android Git Automerger
6 changed files with 106 additions and 15 deletions

View File

@ -48132,7 +48132,7 @@
deprecated="not deprecated" deprecated="not deprecated"
visibility="public" visibility="public"
> >
<parameter name="className" type="android.content.ComponentName"> <parameter name="component" type="android.content.ComponentName">
</parameter> </parameter>
<parameter name="flags" type="int"> <parameter name="flags" type="int">
</parameter> </parameter>
@ -48528,6 +48528,23 @@
<parameter name="flags" type="int"> <parameter name="flags" type="int">
</parameter> </parameter>
</method> </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" <method name="getReceiverInfo"
return="android.content.pm.ActivityInfo" return="android.content.pm.ActivityInfo"
abstract="true" abstract="true"
@ -48538,7 +48555,7 @@
deprecated="not deprecated" deprecated="not deprecated"
visibility="public" visibility="public"
> >
<parameter name="className" type="android.content.ComponentName"> <parameter name="component" type="android.content.ComponentName">
</parameter> </parameter>
<parameter name="flags" type="int"> <parameter name="flags" type="int">
</parameter> </parameter>
@ -48600,7 +48617,7 @@
deprecated="not deprecated" deprecated="not deprecated"
visibility="public" visibility="public"
> >
<parameter name="className" type="android.content.ComponentName"> <parameter name="component" type="android.content.ComponentName">
</parameter> </parameter>
<parameter name="flags" type="int"> <parameter name="flags" type="int">
</parameter> </parameter>
@ -158361,6 +158378,23 @@
<parameter name="flags" type="int"> <parameter name="flags" type="int">
</parameter> </parameter>
</method> </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" <method name="getReceiverInfo"
return="android.content.pm.ActivityInfo" return="android.content.pm.ActivityInfo"
abstract="false" abstract="false"

View File

@ -1841,6 +1841,21 @@ class ContextImpl extends Context {
throw new NameNotFoundException(className.toString()); throw new NameNotFoundException(className.toString());
} }
@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 @Override
public String[] getSystemSharedLibraryNames() { public String[] getSystemSharedLibraryNames() {
try { try {

View File

@ -68,6 +68,8 @@ interface IPackageManager {
ServiceInfo getServiceInfo(in ComponentName className, int flags); ServiceInfo getServiceInfo(in ComponentName className, int flags);
ProviderInfo getProviderInfo(in ComponentName className, int flags);
int checkPermission(String permName, String pkgName); int checkPermission(String permName, String pkgName);
int checkUidPermission(String permName, int uid); int checkUidPermission(String permName, int uid);

View File

@ -996,9 +996,9 @@ public abstract class PackageManager {
* <p>Throws {@link NameNotFoundException} if an activity with the given * <p>Throws {@link NameNotFoundException} if an activity with the given
* class name can not be found on the system. * class name can not be found on the system.
* *
* @param className The full name (i.e. * @param component The full component name (i.e.
* com.google.apps.contacts.ContactsList) of an Activity * com.google.apps.contacts/com.google.apps.contacts.ContactsList) of an Activity
* class. * class.
* @param flags Additional option flags. Use any combination of * @param flags Additional option flags. Use any combination of
* {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES},
* to modify the data (in ApplicationInfo) returned. * to modify the data (in ApplicationInfo) returned.
@ -1009,7 +1009,7 @@ public abstract class PackageManager {
* @see #GET_META_DATA * @see #GET_META_DATA
* @see #GET_SHARED_LIBRARY_FILES * @see #GET_SHARED_LIBRARY_FILES
*/ */
public abstract ActivityInfo getActivityInfo(ComponentName className, public abstract ActivityInfo getActivityInfo(ComponentName component,
int flags) throws NameNotFoundException; int flags) throws NameNotFoundException;
/** /**
@ -1019,9 +1019,9 @@ public abstract class PackageManager {
* <p>Throws {@link NameNotFoundException} if a receiver with the given * <p>Throws {@link NameNotFoundException} if a receiver with the given
* class name can not be found on the system. * class name can not be found on the system.
* *
* @param className The full name (i.e. * @param component The full component name (i.e.
* com.google.apps.contacts.CalendarAlarm) of a Receiver * com.google.apps.calendar/com.google.apps.calendar.CalendarAlarm) of a Receiver
* class. * class.
* @param flags Additional option flags. Use any combination of * @param flags Additional option flags. Use any combination of
* {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES},
* to modify the data returned. * to modify the data returned.
@ -1032,7 +1032,7 @@ public abstract class PackageManager {
* @see #GET_META_DATA * @see #GET_META_DATA
* @see #GET_SHARED_LIBRARY_FILES * @see #GET_SHARED_LIBRARY_FILES
*/ */
public abstract ActivityInfo getReceiverInfo(ComponentName className, public abstract ActivityInfo getReceiverInfo(ComponentName component,
int flags) throws NameNotFoundException; int flags) throws NameNotFoundException;
/** /**
@ -1042,9 +1042,9 @@ public abstract class PackageManager {
* <p>Throws {@link NameNotFoundException} if a service with the given * <p>Throws {@link NameNotFoundException} if a service with the given
* class name can not be found on the system. * class name can not be found on the system.
* *
* @param className The full name (i.e. * @param component The full component name (i.e.
* com.google.apps.media.BackgroundPlayback) of a Service * com.google.apps.media/com.google.apps.media.BackgroundPlayback) of a Service
* class. * class.
* @param flags Additional option flags. Use any combination of * @param flags Additional option flags. Use any combination of
* {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES},
* to modify the data returned. * to modify the data returned.
@ -1054,7 +1054,29 @@ public abstract class PackageManager {
* @see #GET_META_DATA * @see #GET_META_DATA
* @see #GET_SHARED_LIBRARY_FILES * @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; int flags) throws NameNotFoundException;
/** /**

View File

@ -1615,6 +1615,18 @@ class PackageManagerService extends IPackageManager.Stub {
return null; 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() { public String[] getSystemSharedLibraryNames() {
Set<String> libSet; Set<String> libSet;
synchronized (mPackages) { synchronized (mPackages) {

View File

@ -126,6 +126,12 @@ public class MockPackageManager extends PackageManager {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override
public ProviderInfo getProviderInfo(ComponentName className, int flags)
throws NameNotFoundException {
throw new UnsupportedOperationException();
}
@Override @Override
public List<PackageInfo> getInstalledPackages(int flags) { public List<PackageInfo> getInstalledPackages(int flags) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();