Merge change I0d8f7593 into eclair
* changes: Fix issue #2296457: PackageManager.addPackageToPreferred needs to a no-op
This commit is contained in:
@@ -976,7 +976,7 @@
|
|||||||
value=""android.permission.SET_PREFERRED_APPLICATIONS""
|
value=""android.permission.SET_PREFERRED_APPLICATIONS""
|
||||||
static="true"
|
static="true"
|
||||||
final="true"
|
final="true"
|
||||||
deprecated="not deprecated"
|
deprecated="deprecated"
|
||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
</field>
|
</field>
|
||||||
@@ -41097,7 +41097,7 @@
|
|||||||
synchronized="false"
|
synchronized="false"
|
||||||
static="false"
|
static="false"
|
||||||
final="false"
|
final="false"
|
||||||
deprecated="not deprecated"
|
deprecated="deprecated"
|
||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
<parameter name="packageName" type="java.lang.String">
|
<parameter name="packageName" type="java.lang.String">
|
||||||
@@ -41850,7 +41850,7 @@
|
|||||||
synchronized="false"
|
synchronized="false"
|
||||||
static="false"
|
static="false"
|
||||||
final="false"
|
final="false"
|
||||||
deprecated="not deprecated"
|
deprecated="deprecated"
|
||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
<parameter name="packageName" type="java.lang.String">
|
<parameter name="packageName" type="java.lang.String">
|
||||||
|
|||||||
@@ -1656,21 +1656,19 @@ public abstract class PackageManager {
|
|||||||
IPackageStatsObserver observer);
|
IPackageStatsObserver observer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new package to the list of preferred packages. This new package
|
* @deprecated This function no longer does anything; it was an old
|
||||||
* will be added to the front of the list (removed from its current location
|
* approach to managing preferred activities, which has been superceeded
|
||||||
* if already listed), meaning it will now be preferred over all other
|
* (and conflicts with) the modern activity-based preferences.
|
||||||
* packages when resolving conflicts.
|
|
||||||
*
|
|
||||||
* @param packageName The package name of the new package to make preferred.
|
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public abstract void addPackageToPreferred(String packageName);
|
public abstract void addPackageToPreferred(String packageName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a package from the list of preferred packages. If it was on
|
* @deprecated This function no longer does anything; it was an old
|
||||||
* the list, it will no longer be preferred over other packages.
|
* approach to managing preferred activities, which has been superceeded
|
||||||
*
|
* (and conflicts with) the modern activity-based preferences.
|
||||||
* @param packageName The package name to remove.
|
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public abstract void removePackageFromPreferred(String packageName);
|
public abstract void removePackageFromPreferred(String packageName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -597,11 +597,9 @@
|
|||||||
android:label="@string/permlab_getPackageSize"
|
android:label="@string/permlab_getPackageSize"
|
||||||
android:description="@string/permdesc_getPackageSize" />
|
android:description="@string/permdesc_getPackageSize" />
|
||||||
|
|
||||||
<!-- Allows an application to modify the list of preferred applications
|
<!-- @deprecated No longer useful, see
|
||||||
with the {@link android.content.pm.PackageManager#addPackageToPreferred
|
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
||||||
PackageManager.addPackageToPreferred()} and
|
for details. -->
|
||||||
{@link android.content.pm.PackageManager#removePackageFromPreferred
|
|
||||||
PackageManager.removePackageFromPreferred()} methods. -->
|
|
||||||
<permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"
|
<permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"
|
||||||
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
|
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
|
||||||
android:protectionLevel="dangerous"
|
android:protectionLevel="dangerous"
|
||||||
|
|||||||
@@ -2966,12 +2966,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
TAG, "Removing package " + pkg.applicationInfo.packageName );
|
TAG, "Removing package " + pkg.applicationInfo.packageName );
|
||||||
|
|
||||||
synchronized (mPackages) {
|
synchronized (mPackages) {
|
||||||
if (pkg.mPreferredOrder > 0) {
|
|
||||||
mSettings.mPreferredPackages.remove(pkg);
|
|
||||||
pkg.mPreferredOrder = 0;
|
|
||||||
updatePreferredIndicesLP();
|
|
||||||
}
|
|
||||||
|
|
||||||
clearPackagePreferredActivitiesLP(pkg.packageName);
|
clearPackagePreferredActivitiesLP(pkg.packageName);
|
||||||
|
|
||||||
mPackages.remove(pkg.applicationInfo.packageName);
|
mPackages.remove(pkg.applicationInfo.packageName);
|
||||||
@@ -4938,62 +4932,17 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
public void addPackageToPreferred(String packageName) {
|
public void addPackageToPreferred(String packageName) {
|
||||||
mContext.enforceCallingOrSelfPermission(
|
mContext.enforceCallingOrSelfPermission(
|
||||||
android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
|
android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
|
||||||
|
Log.w(TAG, "addPackageToPreferred: no longer implemented");
|
||||||
synchronized (mPackages) {
|
|
||||||
PackageParser.Package p = mPackages.get(packageName);
|
|
||||||
if (p == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PackageSetting ps = (PackageSetting)p.mExtras;
|
|
||||||
if (ps != null) {
|
|
||||||
mSettings.mPreferredPackages.remove(ps);
|
|
||||||
mSettings.mPreferredPackages.add(0, ps);
|
|
||||||
updatePreferredIndicesLP();
|
|
||||||
mSettings.writeLP();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removePackageFromPreferred(String packageName) {
|
public void removePackageFromPreferred(String packageName) {
|
||||||
mContext.enforceCallingOrSelfPermission(
|
mContext.enforceCallingOrSelfPermission(
|
||||||
android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
|
android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
|
||||||
|
Log.w(TAG, "removePackageFromPreferred: no longer implemented");
|
||||||
synchronized (mPackages) {
|
|
||||||
PackageParser.Package p = mPackages.get(packageName);
|
|
||||||
if (p == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (p.mPreferredOrder > 0) {
|
|
||||||
PackageSetting ps = (PackageSetting)p.mExtras;
|
|
||||||
if (ps != null) {
|
|
||||||
mSettings.mPreferredPackages.remove(ps);
|
|
||||||
p.mPreferredOrder = 0;
|
|
||||||
updatePreferredIndicesLP();
|
|
||||||
mSettings.writeLP();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updatePreferredIndicesLP() {
|
|
||||||
final ArrayList<PackageSetting> pkgs
|
|
||||||
= mSettings.mPreferredPackages;
|
|
||||||
final int N = pkgs.size();
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
pkgs.get(i).pkg.mPreferredOrder = N - i;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PackageInfo> getPreferredPackages(int flags) {
|
public List<PackageInfo> getPreferredPackages(int flags) {
|
||||||
synchronized (mPackages) {
|
return new ArrayList<PackageInfo>();
|
||||||
final ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
|
|
||||||
final ArrayList<PackageSetting> pref = mSettings.mPreferredPackages;
|
|
||||||
final int N = pref.size();
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
res.add(generatePackageInfo(pref.get(i).pkg, flags));
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPreferredActivity(IntentFilter filter, int match,
|
public void addPreferredActivity(IntentFilter filter, int match,
|
||||||
@@ -5307,13 +5256,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
pw.println("Preferred Activities:");
|
pw.println("Preferred Activities:");
|
||||||
mSettings.mPreferredActivities.dump(pw, " ");
|
mSettings.mPreferredActivities.dump(pw, " ");
|
||||||
pw.println(" ");
|
pw.println(" ");
|
||||||
pw.println("Preferred Packages:");
|
|
||||||
{
|
|
||||||
for (PackageSetting ps : mSettings.mPreferredPackages) {
|
|
||||||
pw.print(" "); pw.println(ps.name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pw.println(" ");
|
|
||||||
pw.println("Permissions:");
|
pw.println("Permissions:");
|
||||||
{
|
{
|
||||||
for (BasePermission p : mSettings.mPermissions.values()) {
|
for (BasePermission p : mSettings.mPermissions.values()) {
|
||||||
@@ -6064,10 +6006,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
private final File mBackupSettingsFilename;
|
private final File mBackupSettingsFilename;
|
||||||
private final HashMap<String, PackageSetting> mPackages =
|
private final HashMap<String, PackageSetting> mPackages =
|
||||||
new HashMap<String, PackageSetting>();
|
new HashMap<String, PackageSetting>();
|
||||||
// The user's preferred packages/applications, in order of preference.
|
|
||||||
// First is the most preferred.
|
|
||||||
private final ArrayList<PackageSetting> mPreferredPackages =
|
|
||||||
new ArrayList<PackageSetting>();
|
|
||||||
// List of replaced system applications
|
// List of replaced system applications
|
||||||
final HashMap<String, PackageSetting> mDisabledSysPackages =
|
final HashMap<String, PackageSetting> mDisabledSysPackages =
|
||||||
new HashMap<String, PackageSetting>();
|
new HashMap<String, PackageSetting>();
|
||||||
@@ -6112,9 +6050,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
final HashMap<String, BasePermission> mPermissionTrees =
|
final HashMap<String, BasePermission> mPermissionTrees =
|
||||||
new HashMap<String, BasePermission>();
|
new HashMap<String, BasePermission>();
|
||||||
|
|
||||||
private final ArrayList<String> mPendingPreferredPackages
|
|
||||||
= new ArrayList<String>();
|
|
||||||
|
|
||||||
private final StringBuilder mReadMessages = new StringBuilder();
|
private final StringBuilder mReadMessages = new StringBuilder();
|
||||||
|
|
||||||
private static final class PendingPackage extends PackageSettingBase {
|
private static final class PendingPackage extends PackageSettingBase {
|
||||||
@@ -6598,16 +6533,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
writeDisabledSysPackage(serializer, pkg);
|
writeDisabledSysPackage(serializer, pkg);
|
||||||
}
|
}
|
||||||
|
|
||||||
serializer.startTag(null, "preferred-packages");
|
|
||||||
int N = mPreferredPackages.size();
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
PackageSetting pkg = mPreferredPackages.get(i);
|
|
||||||
serializer.startTag(null, "item");
|
|
||||||
serializer.attribute(null, "name", pkg.name);
|
|
||||||
serializer.endTag(null, "item");
|
|
||||||
}
|
|
||||||
serializer.endTag(null, "preferred-packages");
|
|
||||||
|
|
||||||
serializer.startTag(null, "preferred-activities");
|
serializer.startTag(null, "preferred-activities");
|
||||||
for (PreferredActivity pa : mPreferredActivities.filterSet()) {
|
for (PreferredActivity pa : mPreferredActivities.filterSet()) {
|
||||||
serializer.startTag(null, "item");
|
serializer.startTag(null, "item");
|
||||||
@@ -6885,7 +6810,7 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
} else if (tagName.equals("shared-user")) {
|
} else if (tagName.equals("shared-user")) {
|
||||||
readSharedUserLP(parser);
|
readSharedUserLP(parser);
|
||||||
} else if (tagName.equals("preferred-packages")) {
|
} else if (tagName.equals("preferred-packages")) {
|
||||||
readPreferredPackagesLP(parser);
|
// no longer used.
|
||||||
} else if (tagName.equals("preferred-activities")) {
|
} else if (tagName.equals("preferred-activities")) {
|
||||||
readPreferredActivitiesLP(parser);
|
readPreferredActivitiesLP(parser);
|
||||||
} else if(tagName.equals("updated-package")) {
|
} else if(tagName.equals("updated-package")) {
|
||||||
@@ -6939,19 +6864,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
}
|
}
|
||||||
mPendingPackages.clear();
|
mPendingPackages.clear();
|
||||||
|
|
||||||
N = mPendingPreferredPackages.size();
|
|
||||||
mPreferredPackages.clear();
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
final String name = mPendingPreferredPackages.get(i);
|
|
||||||
final PackageSetting p = mPackages.get(name);
|
|
||||||
if (p != null) {
|
|
||||||
mPreferredPackages.add(p);
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Unknown preferred package: " + name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mPendingPreferredPackages.clear();
|
|
||||||
|
|
||||||
mReadMessages.append("Read completed successfully: "
|
mReadMessages.append("Read completed successfully: "
|
||||||
+ mPackages.size() + " packages, "
|
+ mPackages.size() + " packages, "
|
||||||
+ mSharedUsers.size() + " shared uids\n");
|
+ mSharedUsers.size() + " shared uids\n");
|
||||||
@@ -7410,37 +7322,6 @@ class PackageManagerService extends IPackageManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void readPreferredPackagesLP(XmlPullParser parser)
|
|
||||||
throws XmlPullParserException, IOException {
|
|
||||||
int outerDepth = parser.getDepth();
|
|
||||||
int type;
|
|
||||||
while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
|
|
||||||
&& (type != XmlPullParser.END_TAG
|
|
||||||
|| parser.getDepth() > outerDepth)) {
|
|
||||||
if (type == XmlPullParser.END_TAG
|
|
||||||
|| type == XmlPullParser.TEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
String tagName = parser.getName();
|
|
||||||
if (tagName.equals("item")) {
|
|
||||||
String name = parser.getAttributeValue(null, "name");
|
|
||||||
if (name != null) {
|
|
||||||
mPendingPreferredPackages.add(name);
|
|
||||||
} else {
|
|
||||||
reportSettingsProblem(Log.WARN,
|
|
||||||
"Error in package manager settings: <preferred-package> has no name at "
|
|
||||||
+ parser.getPositionDescription());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
reportSettingsProblem(Log.WARN,
|
|
||||||
"Unknown element under <preferred-packages>: "
|
|
||||||
+ parser.getName());
|
|
||||||
}
|
|
||||||
XmlUtils.skipCurrentTag(parser);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void readPreferredActivitiesLP(XmlPullParser parser)
|
private void readPreferredActivitiesLP(XmlPullParser parser)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
int outerDepth = parser.getDepth();
|
int outerDepth = parser.getDepth();
|
||||||
|
|||||||
Reference in New Issue
Block a user