Loading core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -210,6 +210,8 @@ interface IPackageManager { List<PackageInfo> getPreferredPackages(int flags); List<PackageInfo> getPreferredPackages(int flags); void resetPreferredActivities(int userId); void addPreferredActivity(in IntentFilter filter, int match, void addPreferredActivity(in IntentFilter filter, int match, in ComponentName[] set, in ComponentName activity, int userId); in ComponentName[] set, in ComponentName activity, int userId); Loading core/java/com/android/internal/util/FastXmlSerializer.java +33 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,8 @@ public class FastXmlSerializer implements XmlSerializer { private static final int BUFFER_LEN = 8192; private static final int BUFFER_LEN = 8192; private static String sSpace = " "; private final char[] mText = new char[BUFFER_LEN]; private final char[] mText = new char[BUFFER_LEN]; private int mPos; private int mPos; Loading @@ -59,8 +61,12 @@ public class FastXmlSerializer implements XmlSerializer { private CharsetEncoder mCharset; private CharsetEncoder mCharset; private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN); private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN); private boolean mIndent = false; private boolean mInTag; private boolean mInTag; private int mNesting = 0; private boolean mLineStart = true; private void append(char c) throws IOException { private void append(char c) throws IOException { int pos = mPos; int pos = mPos; if (pos >= (BUFFER_LEN-1)) { if (pos >= (BUFFER_LEN-1)) { Loading Loading @@ -113,6 +119,14 @@ public class FastXmlSerializer implements XmlSerializer { append(str, 0, str.length()); append(str, 0, str.length()); } } private void appendIndent(int indent) throws IOException { indent *= 4; if (indent > sSpace.length()) { indent = sSpace.length(); } append(sSpace, 0, indent); } private void escapeAndAppendString(final String string) throws IOException { private void escapeAndAppendString(final String string) throws IOException { final int N = string.length(); final int N = string.length(); final char NE = (char)ESCAPE_TABLE.length; final char NE = (char)ESCAPE_TABLE.length; Loading Loading @@ -161,6 +175,7 @@ public class FastXmlSerializer implements XmlSerializer { escapeAndAppendString(value); escapeAndAppendString(value); append('"'); append('"'); mLineStart = false; return this; return this; } } Loading @@ -185,9 +200,13 @@ public class FastXmlSerializer implements XmlSerializer { public XmlSerializer endTag(String namespace, String name) throws IOException, public XmlSerializer endTag(String namespace, String name) throws IOException, IllegalArgumentException, IllegalStateException { IllegalArgumentException, IllegalStateException { mNesting--; if (mInTag) { if (mInTag) { append(" />\n"); append(" />\n"); } else { } else { if (mIndent && mLineStart) { appendIndent(mNesting); } append("</"); append("</"); if (namespace != null) { if (namespace != null) { append(namespace); append(namespace); Loading @@ -196,6 +215,7 @@ public class FastXmlSerializer implements XmlSerializer { append(name); append(name); append(">\n"); append(">\n"); } } mLineStart = true; mInTag = false; mInTag = false; return this; return this; } } Loading Loading @@ -278,6 +298,7 @@ public class FastXmlSerializer implements XmlSerializer { public void setFeature(String name, boolean state) throws IllegalArgumentException, public void setFeature(String name, boolean state) throws IllegalArgumentException, IllegalStateException { IllegalStateException { if (name.equals("http://xmlpull.org/v1/doc/features.html#indent-output")) { if (name.equals("http://xmlpull.org/v1/doc/features.html#indent-output")) { mIndent = true; return; return; } } throw new UnsupportedOperationException(); throw new UnsupportedOperationException(); Loading Loading @@ -325,6 +346,7 @@ public class FastXmlSerializer implements XmlSerializer { IllegalArgumentException, IllegalStateException { IllegalArgumentException, IllegalStateException { append("<?xml version='1.0' encoding='utf-8' standalone='" append("<?xml version='1.0' encoding='utf-8' standalone='" + (standalone ? "yes" : "no") + "' ?>\n"); + (standalone ? "yes" : "no") + "' ?>\n"); mLineStart = true; } } public XmlSerializer startTag(String namespace, String name) throws IOException, public XmlSerializer startTag(String namespace, String name) throws IOException, Loading @@ -332,6 +354,10 @@ public class FastXmlSerializer implements XmlSerializer { if (mInTag) { if (mInTag) { append(">\n"); append(">\n"); } } if (mIndent) { appendIndent(mNesting); } mNesting++; append('<'); append('<'); if (namespace != null) { if (namespace != null) { append(namespace); append(namespace); Loading @@ -339,6 +365,7 @@ public class FastXmlSerializer implements XmlSerializer { } } append(name); append(name); mInTag = true; mInTag = true; mLineStart = false; return this; return this; } } Loading @@ -349,6 +376,9 @@ public class FastXmlSerializer implements XmlSerializer { mInTag = false; mInTag = false; } } escapeAndAppendString(buf, start, len); escapeAndAppendString(buf, start, len); if (mIndent) { mLineStart = buf[start+len-1] == '\n'; } return this; return this; } } Loading @@ -359,6 +389,9 @@ public class FastXmlSerializer implements XmlSerializer { mInTag = false; mInTag = false; } } escapeAndAppendString(text); escapeAndAppendString(text); if (mIndent) { mLineStart = text.charAt(text.length()-1) == '\n'; } return this; return this; } } Loading services/java/com/android/server/PreferredComponent.java +11 −9 Original line number Original line Diff line number Diff line Loading @@ -164,9 +164,10 @@ public class PreferredComponent { return mParseError; return mParseError; } } public void writeToXml(XmlSerializer serializer) throws IOException { public void writeToXml(XmlSerializer serializer, boolean full) throws IOException { final int NS = mSetClasses != null ? mSetClasses.length : 0; final int NS = mSetClasses != null ? mSetClasses.length : 0; serializer.attribute(null, "name", mShortComponent); serializer.attribute(null, "name", mShortComponent); if (full) { if (mMatch != 0) { if (mMatch != 0) { serializer.attribute(null, "match", Integer.toHexString(mMatch)); serializer.attribute(null, "match", Integer.toHexString(mMatch)); } } Loading @@ -177,6 +178,7 @@ public class PreferredComponent { serializer.endTag(null, "set"); serializer.endTag(null, "set"); } } } } } public boolean sameSet(List<ResolveInfo> query, int priority) { public boolean sameSet(List<ResolveInfo> query, int priority) { if (mSetPackages == null) return false; if (mSetPackages == null) return false; Loading services/java/com/android/server/pm/PackageManagerService.java +30 −10 Original line number Original line Diff line number Diff line Loading @@ -173,7 +173,7 @@ adb shell am instrument -w -e class com.android.unit_tests.PackageManagerTests c public class PackageManagerService extends IPackageManager.Stub { public class PackageManagerService extends IPackageManager.Stub { static final String TAG = "PackageManager"; static final String TAG = "PackageManager"; static final boolean DEBUG_SETTINGS = false; static final boolean DEBUG_SETTINGS = false; private static final boolean DEBUG_PREFERRED = false; static final boolean DEBUG_PREFERRED = true; static final boolean DEBUG_UPGRADE = false; static final boolean DEBUG_UPGRADE = false; private static final boolean DEBUG_INSTALL = false; private static final boolean DEBUG_INSTALL = false; private static final boolean DEBUG_REMOVE = false; private static final boolean DEBUG_REMOVE = false; Loading Loading @@ -1021,7 +1021,7 @@ public class PackageManagerService extends IPackageManager.Stub { readPermissions(); readPermissions(); mRestoredSettings = mSettings.readLPw(sUserManager.getUsers(false), mRestoredSettings = mSettings.readLPw(this, sUserManager.getUsers(false), mSdkVersion, mOnlyCore); mSdkVersion, mOnlyCore); long startTime = SystemClock.uptimeMillis(); long startTime = SystemClock.uptimeMillis(); Loading Loading @@ -4967,7 +4967,7 @@ public class PackageManagerService extends IPackageManager.Stub { ps.haveGids = true; ps.haveGids = true; } } private final class ActivityIntentResolver final class ActivityIntentResolver extends IntentResolver<PackageParser.ActivityIntentInfo, ResolveInfo> { extends IntentResolver<PackageParser.ActivityIntentInfo, ResolveInfo> { public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, boolean defaultOnly, int userId) { boolean defaultOnly, int userId) { Loading Loading @@ -8830,7 +8830,9 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } if (clearPackagePreferredActivitiesLPw(packageName, UserHandle.getCallingUserId())) { int user = UserHandle.getCallingUserId(); if (clearPackagePreferredActivitiesLPw(packageName, user)) { mSettings.writePackageRestrictionsLPr(user); scheduleWriteSettingsLocked(); scheduleWriteSettingsLocked(); } } } } Loading @@ -8849,7 +8851,8 @@ public class PackageManagerService extends IPackageManager.Stub { Iterator<PreferredActivity> it = pir.filterIterator(); Iterator<PreferredActivity> it = pir.filterIterator(); while (it.hasNext()) { while (it.hasNext()) { PreferredActivity pa = it.next(); PreferredActivity pa = it.next(); if (pa.mPref.mComponent.getPackageName().equals(packageName)) { if (packageName == null || pa.mPref.mComponent.getPackageName().equals(packageName)) { if (removed == null) { if (removed == null) { removed = new ArrayList<PreferredActivity>(); removed = new ArrayList<PreferredActivity>(); } } Loading @@ -8862,12 +8865,24 @@ public class PackageManagerService extends IPackageManager.Stub { pir.removeFilter(pa); pir.removeFilter(pa); } } changed = true; changed = true; mSettings.writePackageRestrictionsLPr(thisUserId); } } } } return changed; return changed; } } public void resetPreferredActivities(int userId) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); // writer synchronized (mPackages) { int user = UserHandle.getCallingUserId(); clearPackagePreferredActivitiesLPw(null, user); mSettings.readDefaultPreferredAppsLPw(this, user); mSettings.writePackageRestrictionsLPr(user); scheduleWriteSettingsLocked(); } } public int getPreferredActivities(List<IntentFilter> outFilters, public int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName) { List<ComponentName> outActivities, String packageName) { Loading Loading @@ -9254,6 +9269,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } DumpState dumpState = new DumpState(); DumpState dumpState = new DumpState(); boolean fullPreferred = false; String packageName = null; String packageName = null; Loading @@ -9277,7 +9293,7 @@ public class PackageManagerService extends IPackageManager.Stub { pw.println(" r[esolvers]: dump intent resolvers"); pw.println(" r[esolvers]: dump intent resolvers"); pw.println(" perm[issions]: dump permissions"); pw.println(" perm[issions]: dump permissions"); pw.println(" pref[erred]: print preferred package settings"); pw.println(" pref[erred]: print preferred package settings"); pw.println(" preferred-xml: print preferred package settings as xml"); pw.println(" preferred-xml [--full]: print preferred package settings as xml"); pw.println(" prov[iders]: dump content providers"); pw.println(" prov[iders]: dump content providers"); pw.println(" p[ackages]: dump installed packages"); pw.println(" p[ackages]: dump installed packages"); pw.println(" s[hared-users]: dump shared user IDs"); pw.println(" s[hared-users]: dump shared user IDs"); Loading Loading @@ -9311,6 +9327,10 @@ public class PackageManagerService extends IPackageManager.Stub { dumpState.setDump(DumpState.DUMP_PREFERRED); dumpState.setDump(DumpState.DUMP_PREFERRED); } else if ("preferred-xml".equals(cmd)) { } else if ("preferred-xml".equals(cmd)) { dumpState.setDump(DumpState.DUMP_PREFERRED_XML); dumpState.setDump(DumpState.DUMP_PREFERRED_XML); opti++; if (opti < args.length && "--full".equals(args[opti])) { fullPreferred = true; } } else if ("p".equals(cmd) || "packages".equals(cmd)) { } else if ("p".equals(cmd) || "packages".equals(cmd)) { dumpState.setDump(DumpState.DUMP_PACKAGES); dumpState.setDump(DumpState.DUMP_PACKAGES); } else if ("s".equals(cmd) || "shared-users".equals(cmd)) { } else if ("s".equals(cmd) || "shared-users".equals(cmd)) { Loading Loading @@ -9405,7 +9425,7 @@ public class PackageManagerService extends IPackageManager.Stub { serializer.startDocument(null, true); serializer.startDocument(null, true); serializer.setFeature( serializer.setFeature( "http://xmlpull.org/v1/doc/features.html#indent-output", true); "http://xmlpull.org/v1/doc/features.html#indent-output", true); mSettings.writePreferredActivitiesLPr(serializer, 0); mSettings.writePreferredActivitiesLPr(serializer, 0, fullPreferred); serializer.endDocument(); serializer.endDocument(); serializer.flush(); serializer.flush(); } catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) { Loading Loading @@ -10158,7 +10178,7 @@ public class PackageManagerService extends IPackageManager.Stub { /** Called by UserManagerService */ /** Called by UserManagerService */ void createNewUserLILPw(int userHandle, File path) { void createNewUserLILPw(int userHandle, File path) { if (mInstaller != null) { if (mInstaller != null) { mSettings.createNewUserLILPw(mInstaller, userHandle, path); mSettings.createNewUserLILPw(this, mInstaller, userHandle, path); } } } } Loading services/java/com/android/server/pm/PreferredActivity.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -46,8 +46,8 @@ class PreferredActivity extends IntentFilter implements PreferredComponent.Callb mPref = new PreferredComponent(this, parser); mPref = new PreferredComponent(this, parser); } } public void writeToXml(XmlSerializer serializer) throws IOException { public void writeToXml(XmlSerializer serializer, boolean full) throws IOException { mPref.writeToXml(serializer); mPref.writeToXml(serializer, full); serializer.startTag(null, "filter"); serializer.startTag(null, "filter"); super.writeToXml(serializer); super.writeToXml(serializer); serializer.endTag(null, "filter"); serializer.endTag(null, "filter"); Loading Loading
core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -210,6 +210,8 @@ interface IPackageManager { List<PackageInfo> getPreferredPackages(int flags); List<PackageInfo> getPreferredPackages(int flags); void resetPreferredActivities(int userId); void addPreferredActivity(in IntentFilter filter, int match, void addPreferredActivity(in IntentFilter filter, int match, in ComponentName[] set, in ComponentName activity, int userId); in ComponentName[] set, in ComponentName activity, int userId); Loading
core/java/com/android/internal/util/FastXmlSerializer.java +33 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,8 @@ public class FastXmlSerializer implements XmlSerializer { private static final int BUFFER_LEN = 8192; private static final int BUFFER_LEN = 8192; private static String sSpace = " "; private final char[] mText = new char[BUFFER_LEN]; private final char[] mText = new char[BUFFER_LEN]; private int mPos; private int mPos; Loading @@ -59,8 +61,12 @@ public class FastXmlSerializer implements XmlSerializer { private CharsetEncoder mCharset; private CharsetEncoder mCharset; private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN); private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN); private boolean mIndent = false; private boolean mInTag; private boolean mInTag; private int mNesting = 0; private boolean mLineStart = true; private void append(char c) throws IOException { private void append(char c) throws IOException { int pos = mPos; int pos = mPos; if (pos >= (BUFFER_LEN-1)) { if (pos >= (BUFFER_LEN-1)) { Loading Loading @@ -113,6 +119,14 @@ public class FastXmlSerializer implements XmlSerializer { append(str, 0, str.length()); append(str, 0, str.length()); } } private void appendIndent(int indent) throws IOException { indent *= 4; if (indent > sSpace.length()) { indent = sSpace.length(); } append(sSpace, 0, indent); } private void escapeAndAppendString(final String string) throws IOException { private void escapeAndAppendString(final String string) throws IOException { final int N = string.length(); final int N = string.length(); final char NE = (char)ESCAPE_TABLE.length; final char NE = (char)ESCAPE_TABLE.length; Loading Loading @@ -161,6 +175,7 @@ public class FastXmlSerializer implements XmlSerializer { escapeAndAppendString(value); escapeAndAppendString(value); append('"'); append('"'); mLineStart = false; return this; return this; } } Loading @@ -185,9 +200,13 @@ public class FastXmlSerializer implements XmlSerializer { public XmlSerializer endTag(String namespace, String name) throws IOException, public XmlSerializer endTag(String namespace, String name) throws IOException, IllegalArgumentException, IllegalStateException { IllegalArgumentException, IllegalStateException { mNesting--; if (mInTag) { if (mInTag) { append(" />\n"); append(" />\n"); } else { } else { if (mIndent && mLineStart) { appendIndent(mNesting); } append("</"); append("</"); if (namespace != null) { if (namespace != null) { append(namespace); append(namespace); Loading @@ -196,6 +215,7 @@ public class FastXmlSerializer implements XmlSerializer { append(name); append(name); append(">\n"); append(">\n"); } } mLineStart = true; mInTag = false; mInTag = false; return this; return this; } } Loading Loading @@ -278,6 +298,7 @@ public class FastXmlSerializer implements XmlSerializer { public void setFeature(String name, boolean state) throws IllegalArgumentException, public void setFeature(String name, boolean state) throws IllegalArgumentException, IllegalStateException { IllegalStateException { if (name.equals("http://xmlpull.org/v1/doc/features.html#indent-output")) { if (name.equals("http://xmlpull.org/v1/doc/features.html#indent-output")) { mIndent = true; return; return; } } throw new UnsupportedOperationException(); throw new UnsupportedOperationException(); Loading Loading @@ -325,6 +346,7 @@ public class FastXmlSerializer implements XmlSerializer { IllegalArgumentException, IllegalStateException { IllegalArgumentException, IllegalStateException { append("<?xml version='1.0' encoding='utf-8' standalone='" append("<?xml version='1.0' encoding='utf-8' standalone='" + (standalone ? "yes" : "no") + "' ?>\n"); + (standalone ? "yes" : "no") + "' ?>\n"); mLineStart = true; } } public XmlSerializer startTag(String namespace, String name) throws IOException, public XmlSerializer startTag(String namespace, String name) throws IOException, Loading @@ -332,6 +354,10 @@ public class FastXmlSerializer implements XmlSerializer { if (mInTag) { if (mInTag) { append(">\n"); append(">\n"); } } if (mIndent) { appendIndent(mNesting); } mNesting++; append('<'); append('<'); if (namespace != null) { if (namespace != null) { append(namespace); append(namespace); Loading @@ -339,6 +365,7 @@ public class FastXmlSerializer implements XmlSerializer { } } append(name); append(name); mInTag = true; mInTag = true; mLineStart = false; return this; return this; } } Loading @@ -349,6 +376,9 @@ public class FastXmlSerializer implements XmlSerializer { mInTag = false; mInTag = false; } } escapeAndAppendString(buf, start, len); escapeAndAppendString(buf, start, len); if (mIndent) { mLineStart = buf[start+len-1] == '\n'; } return this; return this; } } Loading @@ -359,6 +389,9 @@ public class FastXmlSerializer implements XmlSerializer { mInTag = false; mInTag = false; } } escapeAndAppendString(text); escapeAndAppendString(text); if (mIndent) { mLineStart = text.charAt(text.length()-1) == '\n'; } return this; return this; } } Loading
services/java/com/android/server/PreferredComponent.java +11 −9 Original line number Original line Diff line number Diff line Loading @@ -164,9 +164,10 @@ public class PreferredComponent { return mParseError; return mParseError; } } public void writeToXml(XmlSerializer serializer) throws IOException { public void writeToXml(XmlSerializer serializer, boolean full) throws IOException { final int NS = mSetClasses != null ? mSetClasses.length : 0; final int NS = mSetClasses != null ? mSetClasses.length : 0; serializer.attribute(null, "name", mShortComponent); serializer.attribute(null, "name", mShortComponent); if (full) { if (mMatch != 0) { if (mMatch != 0) { serializer.attribute(null, "match", Integer.toHexString(mMatch)); serializer.attribute(null, "match", Integer.toHexString(mMatch)); } } Loading @@ -177,6 +178,7 @@ public class PreferredComponent { serializer.endTag(null, "set"); serializer.endTag(null, "set"); } } } } } public boolean sameSet(List<ResolveInfo> query, int priority) { public boolean sameSet(List<ResolveInfo> query, int priority) { if (mSetPackages == null) return false; if (mSetPackages == null) return false; Loading
services/java/com/android/server/pm/PackageManagerService.java +30 −10 Original line number Original line Diff line number Diff line Loading @@ -173,7 +173,7 @@ adb shell am instrument -w -e class com.android.unit_tests.PackageManagerTests c public class PackageManagerService extends IPackageManager.Stub { public class PackageManagerService extends IPackageManager.Stub { static final String TAG = "PackageManager"; static final String TAG = "PackageManager"; static final boolean DEBUG_SETTINGS = false; static final boolean DEBUG_SETTINGS = false; private static final boolean DEBUG_PREFERRED = false; static final boolean DEBUG_PREFERRED = true; static final boolean DEBUG_UPGRADE = false; static final boolean DEBUG_UPGRADE = false; private static final boolean DEBUG_INSTALL = false; private static final boolean DEBUG_INSTALL = false; private static final boolean DEBUG_REMOVE = false; private static final boolean DEBUG_REMOVE = false; Loading Loading @@ -1021,7 +1021,7 @@ public class PackageManagerService extends IPackageManager.Stub { readPermissions(); readPermissions(); mRestoredSettings = mSettings.readLPw(sUserManager.getUsers(false), mRestoredSettings = mSettings.readLPw(this, sUserManager.getUsers(false), mSdkVersion, mOnlyCore); mSdkVersion, mOnlyCore); long startTime = SystemClock.uptimeMillis(); long startTime = SystemClock.uptimeMillis(); Loading Loading @@ -4967,7 +4967,7 @@ public class PackageManagerService extends IPackageManager.Stub { ps.haveGids = true; ps.haveGids = true; } } private final class ActivityIntentResolver final class ActivityIntentResolver extends IntentResolver<PackageParser.ActivityIntentInfo, ResolveInfo> { extends IntentResolver<PackageParser.ActivityIntentInfo, ResolveInfo> { public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, boolean defaultOnly, int userId) { boolean defaultOnly, int userId) { Loading Loading @@ -8830,7 +8830,9 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } if (clearPackagePreferredActivitiesLPw(packageName, UserHandle.getCallingUserId())) { int user = UserHandle.getCallingUserId(); if (clearPackagePreferredActivitiesLPw(packageName, user)) { mSettings.writePackageRestrictionsLPr(user); scheduleWriteSettingsLocked(); scheduleWriteSettingsLocked(); } } } } Loading @@ -8849,7 +8851,8 @@ public class PackageManagerService extends IPackageManager.Stub { Iterator<PreferredActivity> it = pir.filterIterator(); Iterator<PreferredActivity> it = pir.filterIterator(); while (it.hasNext()) { while (it.hasNext()) { PreferredActivity pa = it.next(); PreferredActivity pa = it.next(); if (pa.mPref.mComponent.getPackageName().equals(packageName)) { if (packageName == null || pa.mPref.mComponent.getPackageName().equals(packageName)) { if (removed == null) { if (removed == null) { removed = new ArrayList<PreferredActivity>(); removed = new ArrayList<PreferredActivity>(); } } Loading @@ -8862,12 +8865,24 @@ public class PackageManagerService extends IPackageManager.Stub { pir.removeFilter(pa); pir.removeFilter(pa); } } changed = true; changed = true; mSettings.writePackageRestrictionsLPr(thisUserId); } } } } return changed; return changed; } } public void resetPreferredActivities(int userId) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); // writer synchronized (mPackages) { int user = UserHandle.getCallingUserId(); clearPackagePreferredActivitiesLPw(null, user); mSettings.readDefaultPreferredAppsLPw(this, user); mSettings.writePackageRestrictionsLPr(user); scheduleWriteSettingsLocked(); } } public int getPreferredActivities(List<IntentFilter> outFilters, public int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName) { List<ComponentName> outActivities, String packageName) { Loading Loading @@ -9254,6 +9269,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } DumpState dumpState = new DumpState(); DumpState dumpState = new DumpState(); boolean fullPreferred = false; String packageName = null; String packageName = null; Loading @@ -9277,7 +9293,7 @@ public class PackageManagerService extends IPackageManager.Stub { pw.println(" r[esolvers]: dump intent resolvers"); pw.println(" r[esolvers]: dump intent resolvers"); pw.println(" perm[issions]: dump permissions"); pw.println(" perm[issions]: dump permissions"); pw.println(" pref[erred]: print preferred package settings"); pw.println(" pref[erred]: print preferred package settings"); pw.println(" preferred-xml: print preferred package settings as xml"); pw.println(" preferred-xml [--full]: print preferred package settings as xml"); pw.println(" prov[iders]: dump content providers"); pw.println(" prov[iders]: dump content providers"); pw.println(" p[ackages]: dump installed packages"); pw.println(" p[ackages]: dump installed packages"); pw.println(" s[hared-users]: dump shared user IDs"); pw.println(" s[hared-users]: dump shared user IDs"); Loading Loading @@ -9311,6 +9327,10 @@ public class PackageManagerService extends IPackageManager.Stub { dumpState.setDump(DumpState.DUMP_PREFERRED); dumpState.setDump(DumpState.DUMP_PREFERRED); } else if ("preferred-xml".equals(cmd)) { } else if ("preferred-xml".equals(cmd)) { dumpState.setDump(DumpState.DUMP_PREFERRED_XML); dumpState.setDump(DumpState.DUMP_PREFERRED_XML); opti++; if (opti < args.length && "--full".equals(args[opti])) { fullPreferred = true; } } else if ("p".equals(cmd) || "packages".equals(cmd)) { } else if ("p".equals(cmd) || "packages".equals(cmd)) { dumpState.setDump(DumpState.DUMP_PACKAGES); dumpState.setDump(DumpState.DUMP_PACKAGES); } else if ("s".equals(cmd) || "shared-users".equals(cmd)) { } else if ("s".equals(cmd) || "shared-users".equals(cmd)) { Loading Loading @@ -9405,7 +9425,7 @@ public class PackageManagerService extends IPackageManager.Stub { serializer.startDocument(null, true); serializer.startDocument(null, true); serializer.setFeature( serializer.setFeature( "http://xmlpull.org/v1/doc/features.html#indent-output", true); "http://xmlpull.org/v1/doc/features.html#indent-output", true); mSettings.writePreferredActivitiesLPr(serializer, 0); mSettings.writePreferredActivitiesLPr(serializer, 0, fullPreferred); serializer.endDocument(); serializer.endDocument(); serializer.flush(); serializer.flush(); } catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) { Loading Loading @@ -10158,7 +10178,7 @@ public class PackageManagerService extends IPackageManager.Stub { /** Called by UserManagerService */ /** Called by UserManagerService */ void createNewUserLILPw(int userHandle, File path) { void createNewUserLILPw(int userHandle, File path) { if (mInstaller != null) { if (mInstaller != null) { mSettings.createNewUserLILPw(mInstaller, userHandle, path); mSettings.createNewUserLILPw(this, mInstaller, userHandle, path); } } } } Loading
services/java/com/android/server/pm/PreferredActivity.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -46,8 +46,8 @@ class PreferredActivity extends IntentFilter implements PreferredComponent.Callb mPref = new PreferredComponent(this, parser); mPref = new PreferredComponent(this, parser); } } public void writeToXml(XmlSerializer serializer) throws IOException { public void writeToXml(XmlSerializer serializer, boolean full) throws IOException { mPref.writeToXml(serializer); mPref.writeToXml(serializer, full); serializer.startTag(null, "filter"); serializer.startTag(null, "filter"); super.writeToXml(serializer); super.writeToXml(serializer); serializer.endTag(null, "filter"); serializer.endTag(null, "filter"); Loading