summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-08-31 19:06:25 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-31 19:06:25 -0700
commit2394c164a76f6d3f8ad9f1c1517f58f72adab9d7 (patch)
treef0cee0035a0983071d2cdd713d77eacc156dab36
parent633524731b2a7a0871aabfabc60459ac27f0e5ab (diff)
parentec438e1448ebc578ee5a4c4beb1e26292cdedd6e (diff)
downloadframeworks_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.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 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();
}