Merge "Allow updated system apps to retain priority" into gingerbread
This commit is contained in:
@ -2601,14 +2601,8 @@ public class PackageParser {
|
|||||||
|
|
||||||
int priority = sa.getInt(
|
int priority = sa.getInt(
|
||||||
com.android.internal.R.styleable.AndroidManifestIntentFilter_priority, 0);
|
com.android.internal.R.styleable.AndroidManifestIntentFilter_priority, 0);
|
||||||
if (priority > 0 && isActivity && (flags&PARSE_IS_SYSTEM) == 0) {
|
|
||||||
Log.w(TAG, "Activity with priority > 0, forcing to 0 at "
|
|
||||||
+ mArchiveSourcePath + " "
|
|
||||||
+ parser.getPositionDescription());
|
|
||||||
priority = 0;
|
|
||||||
}
|
|
||||||
outInfo.setPriority(priority);
|
outInfo.setPriority(priority);
|
||||||
|
|
||||||
TypedValue v = sa.peekValue(
|
TypedValue v = sa.peekValue(
|
||||||
com.android.internal.R.styleable.AndroidManifestIntentFilter_label);
|
com.android.internal.R.styleable.AndroidManifestIntentFilter_label);
|
||||||
if (v != null && (outInfo.labelRes=v.resourceId) == 0) {
|
if (v != null && (outInfo.labelRes=v.resourceId) == 0) {
|
||||||
|
@ -346,7 +346,7 @@ public class IntentResolver<F extends IntentFilter, R extends Object> {
|
|||||||
|
|
||||||
int num = 0;
|
int num = 0;
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
String name = (String)i.next();
|
String name = i.next();
|
||||||
num++;
|
num++;
|
||||||
if (localLOGV) Slog.v(TAG, prefix + name);
|
if (localLOGV) Slog.v(TAG, prefix + name);
|
||||||
String baseName = name;
|
String baseName = name;
|
||||||
@ -395,7 +395,7 @@ public class IntentResolver<F extends IntentFilter, R extends Object> {
|
|||||||
|
|
||||||
int num = 0;
|
int num = 0;
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
String name = (String)i.next();
|
String name = i.next();
|
||||||
num++;
|
num++;
|
||||||
if (localLOGV) Slog.v(TAG, prefix + name);
|
if (localLOGV) Slog.v(TAG, prefix + name);
|
||||||
String baseName = name;
|
String baseName = name;
|
||||||
@ -534,8 +534,8 @@ public class IntentResolver<F extends IntentFilter, R extends Object> {
|
|||||||
// Sorts a List of IntentFilter objects into descending priority order.
|
// Sorts a List of IntentFilter objects into descending priority order.
|
||||||
private static final Comparator mResolvePrioritySorter = new Comparator() {
|
private static final Comparator mResolvePrioritySorter = new Comparator() {
|
||||||
public int compare(Object o1, Object o2) {
|
public int compare(Object o1, Object o2) {
|
||||||
float q1 = ((IntentFilter)o1).getPriority();
|
final int q1 = ((IntentFilter) o1).getPriority();
|
||||||
float q2 = ((IntentFilter)o2).getPriority();
|
final int q2 = ((IntentFilter) o2).getPriority();
|
||||||
return (q1 > q2) ? -1 : ((q1 < q2) ? 1 : 0);
|
return (q1 > q2) ? -1 : ((q1 < q2) ? 1 : 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -2881,13 +2881,13 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
SharedUserSetting suid = null;
|
SharedUserSetting suid = null;
|
||||||
PackageSetting pkgSetting = null;
|
PackageSetting pkgSetting = null;
|
||||||
|
|
||||||
if ((pkg.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) {
|
if (!isSystemApp(pkg)) {
|
||||||
// Only system apps can use these features.
|
// Only system apps can use these features.
|
||||||
pkg.mOriginalPackages = null;
|
pkg.mOriginalPackages = null;
|
||||||
pkg.mRealPackage = null;
|
pkg.mRealPackage = null;
|
||||||
pkg.mAdoptPermissions = null;
|
pkg.mAdoptPermissions = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (mPackages) {
|
synchronized (mPackages) {
|
||||||
// Check all shared libraries and map to their actual file path.
|
// Check all shared libraries and map to their actual file path.
|
||||||
if (pkg.usesLibraries != null || pkg.usesOptionalLibraries != null) {
|
if (pkg.usesLibraries != null || pkg.usesOptionalLibraries != null) {
|
||||||
@ -4080,6 +4080,7 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final void addActivity(PackageParser.Activity a, String type) {
|
public final void addActivity(PackageParser.Activity a, String type) {
|
||||||
|
final boolean systemApp = isSystemApp(a.info.applicationInfo);
|
||||||
mActivities.put(a.getComponentName(), a);
|
mActivities.put(a.getComponentName(), a);
|
||||||
if (SHOW_INFO || Config.LOGV) Log.v(
|
if (SHOW_INFO || Config.LOGV) Log.v(
|
||||||
TAG, " " + type + " " +
|
TAG, " " + type + " " +
|
||||||
@ -4088,6 +4089,11 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
int NI = a.intents.size();
|
int NI = a.intents.size();
|
||||||
for (int j=0; j<NI; j++) {
|
for (int j=0; j<NI; j++) {
|
||||||
PackageParser.ActivityIntentInfo intent = a.intents.get(j);
|
PackageParser.ActivityIntentInfo intent = a.intents.get(j);
|
||||||
|
if (!systemApp && intent.getPriority() > 0 && "activity".equals(type)) {
|
||||||
|
intent.setPriority(0);
|
||||||
|
Log.w(TAG, "Package " + a.info.applicationInfo.packageName + " has activity "
|
||||||
|
+ a.className + " with priority > 0, forcing to 0");
|
||||||
|
}
|
||||||
if (SHOW_INFO || Config.LOGV) {
|
if (SHOW_INFO || Config.LOGV) {
|
||||||
Log.v(TAG, " IntentFilter:");
|
Log.v(TAG, " IntentFilter:");
|
||||||
intent.dump(new LogPrinter(Log.VERBOSE, TAG), " ");
|
intent.dump(new LogPrinter(Log.VERBOSE, TAG), " ");
|
||||||
@ -5952,6 +5958,10 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
|
return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isSystemApp(ApplicationInfo info) {
|
||||||
|
return (info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isUpdatedSystemApp(PackageParser.Package pkg) {
|
private static boolean isUpdatedSystemApp(PackageParser.Package pkg) {
|
||||||
return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
|
return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user