summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.xml40
-rw-r--r--core/java/android/app/ContextImpl.java15
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl2
-rw-r--r--core/java/android/content/pm/PackageManager.java46
-rw-r--r--services/java/com/android/server/PackageManagerService.java12
-rw-r--r--test-runner/src/android/test/mock/MockPackageManager.java6
6 files changed, 106 insertions, 15 deletions
diff --git a/api/current.xml b/api/current.xml
index 9bedb67..1305bad 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -48120,7 +48120,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>
@@ -48516,6 +48516,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"
@@ -48526,7 +48543,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>
@@ -48588,7 +48605,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>
@@ -158313,6 +158330,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 f6ce19d..879670e 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -1845,6 +1845,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 ab50ba7..abf8b7c 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();
}