summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.xml15
-rw-r--r--core/java/android/app/ApplicationContext.java4
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl2
-rw-r--r--core/java/android/content/pm/PackageInfo.java14
-rw-r--r--core/java/android/content/pm/PackageManager.java4
-rw-r--r--core/java/android/content/pm/PackageParser.java16
-rw-r--r--core/java/android/content/pm/ThemeInfo.java18
-rw-r--r--services/java/com/android/server/PackageManagerService.java7
-rw-r--r--test-runner/android/test/mock/MockPackageManager.java2
9 files changed, 41 insertions, 41 deletions
diff --git a/api/current.xml b/api/current.xml
index 8aaebb4..de34947 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -32216,10 +32216,11 @@
visibility="public"
>
</field>
-<field name="themeInfo"
- type="android.content.pm.ThemeInfo"
+<field name="themeInfos"
+ type="android.content.pm.ThemeInfo[]"
transient="false"
volatile="false"
+ value="null"
static="false"
final="false"
deprecated="not deprecated"
@@ -32768,8 +32769,8 @@
<parameter name="flags" type="int">
</parameter>
</method>
-<method name="getInstalledThemes"
- return="java.util.List&lt;android.content.pm.ThemeInfo&gt;"
+<method name="getInstalledThemePackages"
+ return="java.util.List&lt;android.content.pm.PackageInfo&gt;"
abstract="true"
native="false"
synchronized="false"
@@ -35020,7 +35021,7 @@
visibility="public"
>
</field>
-<field name="themePackage"
+<field name="themeName"
type="java.lang.String"
transient="false"
volatile="false"
@@ -101092,8 +101093,8 @@
<parameter name="flags" type="int">
</parameter>
</method>
-<method name="getInstalledThemes"
- return="java.util.List&lt;android.content.pm.ThemeInfo&gt;"
+<method name="getInstalledThemePackages"
+ return="java.util.List&lt;android.content.pm.PackageInfo&gt;"
abstract="false"
native="false"
synchronized="false"
diff --git a/core/java/android/app/ApplicationContext.java b/core/java/android/app/ApplicationContext.java
index 9368b37..0f1194f 100644
--- a/core/java/android/app/ApplicationContext.java
+++ b/core/java/android/app/ApplicationContext.java
@@ -1757,9 +1757,9 @@ class ApplicationContext extends Context {
}
@Override
- public List<ThemeInfo> getInstalledThemes() {
+ public List<PackageInfo> getInstalledThemePackages() {
try {
- return mPM.getInstalledThemes();
+ return mPM.getInstalledThemePackages();
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 4084206..5258186 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -101,7 +101,7 @@ interface IPackageManager {
List<PackageInfo> getInstalledPackages(int flags);
- List<ThemeInfo> getInstalledThemes();
+ List<PackageInfo> getInstalledThemePackages();
List<ApplicationInfo> getInstalledApplications(int flags);
diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java
index c77c01d..bf25078 100644
--- a/core/java/android/content/pm/PackageInfo.java
+++ b/core/java/android/content/pm/PackageInfo.java
@@ -131,7 +131,7 @@ public class PackageInfo implements Parcelable {
public boolean isThemeApk = false;
// ThemeInfo
- public ThemeInfo themeInfo;
+ public ThemeInfo [] themeInfos;
public PackageInfo() {
}
@@ -168,12 +168,7 @@ public class PackageInfo implements Parcelable {
dest.writeStringArray(requestedPermissions);
dest.writeTypedArray(signatures, parcelableFlags);
dest.writeTypedArray(configPreferences, parcelableFlags);
- if (themeInfo != null) {
- dest.writeInt(1);
- themeInfo.writeToParcel(dest, parcelableFlags);
- } else {
- dest.writeInt(0);
- }
+ dest.writeTypedArray(themeInfos, parcelableFlags);
}
public static final Parcelable.Creator<PackageInfo> CREATOR
@@ -207,9 +202,6 @@ public class PackageInfo implements Parcelable {
requestedPermissions = source.createStringArray();
signatures = source.createTypedArray(Signature.CREATOR);
configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
- int hasThemeInfo = source.readInt();
- if (hasThemeInfo != 0) {
- themeInfo = ThemeInfo.CREATOR.createFromParcel(source);
- }
+ themeInfos = source.createTypedArray(ThemeInfo.CREATOR);
}
}
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 4b91d7a..55396eb 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -726,11 +726,11 @@ public abstract class PackageManager {
* Return a List of all theme packages that are installed
* on the device.
*
- * @return A List of ThemeInfo objects, one for each theme package
+ * @return A List of PackageInfo objects, one for each theme package
* that is installed on the device.
*
*/
- public abstract List<ThemeInfo> getInstalledThemes();
+ public abstract List<PackageInfo> getInstalledThemePackages();
/**
* Check whether a particular package has been granted a particular
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 837df24..ba85ec3 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -104,7 +104,15 @@ public class PackageParser {
pi.sharedUserId = p.mSharedUserId;
pi.sharedUserLabel = p.mSharedUserLabel;
pi.isThemeApk = p.mIsThemeApk;
- pi.themeInfo = p.mThemeInfo;
+ if (pi.isThemeApk) {
+ int N = p.mThemeInfos.size();
+ if (N > 0) {
+ pi.themeInfos = new ThemeInfo[N];
+ for (int i = 0; i < N; i++) {
+ pi.themeInfos[i] = p.mThemeInfos.get(i);
+ }
+ }
+ }
pi.applicationInfo = p.applicationInfo;
if ((flags&PackageManager.GET_GIDS) != 0) {
pi.gids = gids;
@@ -705,7 +713,7 @@ public class PackageParser {
// Just skip this tag
XmlUtils.skipCurrentTag(parser);
continue;
- } else if (tagName.equals("themeapk")) {
+ } else if (tagName.equals("theme")) {
// this is a theme apk.
// TODO:
// The actions listed below should be implemented
@@ -722,7 +730,7 @@ public class PackageParser {
// from the appropriate store(s) on the apk un-install.
// 4. For actions 1&2 remove the resources from resource/file cache.
pkg.mIsThemeApk = true;
- pkg.mThemeInfo = new ThemeInfo(attrs);
+ pkg.mThemeInfos.add(new ThemeInfo(attrs));
} else if (RIGID_PARSER) {
outError[0] = "Bad element under <manifest>: "
+ parser.getName();
@@ -2084,7 +2092,7 @@ public class PackageParser {
public boolean mIsThemeApk = false;
// Theme info
- public ThemeInfo mThemeInfo;
+ public final ArrayList<ThemeInfo> mThemeInfos = new ArrayList<ThemeInfo>(0);
// Additional data supplied by callers.
public Object mExtras;
diff --git a/core/java/android/content/pm/ThemeInfo.java b/core/java/android/content/pm/ThemeInfo.java
index e614947..a9e15a0 100644
--- a/core/java/android/content/pm/ThemeInfo.java
+++ b/core/java/android/content/pm/ThemeInfo.java
@@ -14,10 +14,10 @@ import android.util.AttributeSet;
/**
* Overall information about "theme" package. This corresponds
- * to the information collected from AndroidManifest.xml (themeapk tag).
+ * to the information collected from AndroidManifest.xml (theme tag).
*
- * Below is an example of themeapk tag
- * <themeapk
+ * Below is an example of theme tag
+ * <theme
* pluto:themeName="Pluto Default"
* pluto:themeThumbprint="@drawable/app_thumbnail"
* pluto:themeAuthor="John Doe"
@@ -79,12 +79,12 @@ public final class ThemeInfo implements Parcelable {
public int theme = -1;
/**
- * The name of the theme package.
+ * The name of the theme (as displayed by UI).
*
* @see themeName attribute
*
*/
- public String themePackage;
+ public String themeName;
/**
* The name of the call ringtone audio file.
@@ -228,7 +228,7 @@ public final class ThemeInfo implements Parcelable {
switch (index) {
case THEME_PACKAGE_INDEX:
// theme name
- themePackage = attrs.getAttributeValue(i);
+ themeName = attrs.getAttributeValue(i);
break;
case THUMBNAIL_INDEX:
@@ -279,7 +279,7 @@ public final class ThemeInfo implements Parcelable {
}
}
if (numberOfCompulsoryAttributes < compulsoryAttributes.length) {
- throw new XmlPullParserException("Not all compulsory attributes are specified in <themeapk>");
+ throw new XmlPullParserException("Not all compulsory attributes are specified in <theme>");
}
}
@@ -311,7 +311,7 @@ public final class ThemeInfo implements Parcelable {
dest.writeString(favesAppImageName);
dest.writeInt(thumbnail);
dest.writeInt(theme);
- dest.writeString(themePackage);
+ dest.writeString(themeName);
dest.writeString(ringtoneName);
dest.writeString(notificationRingtoneName);
dest.writeString(author);
@@ -335,7 +335,7 @@ public final class ThemeInfo implements Parcelable {
favesAppImageName = source.readString();
thumbnail = source.readInt();
theme = source.readInt();
- themePackage = source.readString();
+ themeName = source.readString();
ringtoneName = source.readString();
notificationRingtoneName = source.readString();
author = source.readString();
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index a3d2ce2..7d8cd73 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -45,7 +45,6 @@ import android.content.pm.InstrumentationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageStats;
-import android.content.pm.ThemeInfo;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
@@ -1557,15 +1556,15 @@ class PackageManagerService extends IPackageManager.Stub {
return finalList;
}
- public List<ThemeInfo> getInstalledThemes() {
+ public List<PackageInfo> getInstalledThemePackages() {
// Returns a list of theme APKs.
- ArrayList<ThemeInfo> finalList = new ArrayList<ThemeInfo>();
+ ArrayList<PackageInfo> finalList = new ArrayList<PackageInfo>();
List<PackageInfo> installedPackagesList = getInstalledPackages(0);
Iterator<PackageInfo> i = installedPackagesList.iterator();
while (i.hasNext()) {
final PackageInfo pi = i.next();
if (pi != null && pi.isThemeApk) {
- finalList.add(pi.themeInfo);
+ finalList.add(pi);
}
}
return finalList;
diff --git a/test-runner/android/test/mock/MockPackageManager.java b/test-runner/android/test/mock/MockPackageManager.java
index 7d0dbfb..8e631b0 100644
--- a/test-runner/android/test/mock/MockPackageManager.java
+++ b/test-runner/android/test/mock/MockPackageManager.java
@@ -121,7 +121,7 @@ public class MockPackageManager extends PackageManager {
}
@Override
- public List<ThemeInfo> getInstalledThemes() {
+ public List<PackageInfo> getInstalledThemePackages() {
throw new UnsupportedOperationException();
}