diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-06-18 16:21:43 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-06-18 16:21:43 -0700 |
commit | 56b3a321e7c6f03d1bc0c5c0915d56bc46b7a33e (patch) | |
tree | c0b9f29e66733fd1b828960258f09a1da25a5265 /services/java/com/android/server/pm/Settings.java | |
parent | 81c61fda9a1b45db4c06d2db2cf24b42045d4f76 (diff) | |
parent | 1991850de7bbcc534c2cb457f33055c533542136 (diff) | |
download | frameworks_base-56b3a321e7c6f03d1bc0c5c0915d56bc46b7a33e.zip frameworks_base-56b3a321e7c6f03d1bc0c5c0915d56bc46b7a33e.tar.gz frameworks_base-56b3a321e7c6f03d1bc0c5c0915d56bc46b7a33e.tar.bz2 |
am 1991850d: Merge "Implement issue #6680894: Provide a way to configure app defaults..." into jb-dev
* commit '1991850de7bbcc534c2cb457f33055c533542136':
Implement issue #6680894: Provide a way to configure app defaults...
Diffstat (limited to 'services/java/com/android/server/pm/Settings.java')
-rw-r--r-- | services/java/com/android/server/pm/Settings.java | 79 |
1 files changed, 72 insertions, 7 deletions
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java index 8b901b7..b26e853 100644 --- a/services/java/com/android/server/pm/Settings.java +++ b/services/java/com/android/server/pm/Settings.java @@ -1174,13 +1174,7 @@ final class Settings { writeDisabledSysPackageLPr(serializer, pkg); } - serializer.startTag(null, "preferred-activities"); - for (final PreferredActivity pa : mPreferredActivities.filterSet()) { - serializer.startTag(null, TAG_ITEM); - pa.writeToXml(serializer); - serializer.endTag(null, TAG_ITEM); - } - serializer.endTag(null, "preferred-activities"); + writePreferredActivitiesLPr(serializer); for (final SharedUserSetting usr : mSharedUsers.values()) { serializer.startTag(null, "shared-user"); @@ -1306,6 +1300,17 @@ final class Settings { //Debug.stopMethodTracing(); } + void writePreferredActivitiesLPr(XmlSerializer serializer) + throws IllegalArgumentException, IllegalStateException, IOException { + serializer.startTag(null, "preferred-activities"); + for (final PreferredActivity pa : mPreferredActivities.filterSet()) { + serializer.startTag(null, TAG_ITEM); + pa.writeToXml(serializer); + serializer.endTag(null, TAG_ITEM); + } + serializer.endTag(null, "preferred-activities"); + } + void writeDisabledSysPackageLPr(XmlSerializer serializer, final PackageSetting pkg) throws java.io.IOException { serializer.startTag(null, "updated-package"); @@ -1477,6 +1482,7 @@ final class Settings { mReadMessages.append("No settings file found\n"); PackageManagerService.reportSettingsProblem(Log.INFO, "No settings file; creating initial state"); + readDefaultPreferredAppsLPw(); return false; } str = new FileInputStream(mSettingsFilename); @@ -1641,6 +1647,65 @@ final class Settings { return true; } + private void readDefaultPreferredAppsLPw() { + // Read preferred apps from .../etc/preferred-apps directory. + File preferredDir = new File(Environment.getRootDirectory(), "etc/preferred-apps"); + if (!preferredDir.exists() || !preferredDir.isDirectory()) { + return; + } + if (!preferredDir.canRead()) { + Slog.w(TAG, "Directory " + preferredDir + " cannot be read"); + return; + } + + // Iterate over the files in the directory and scan .xml files + for (File f : preferredDir.listFiles()) { + if (!f.getPath().endsWith(".xml")) { + Slog.i(TAG, "Non-xml file " + f + " in " + preferredDir + " directory, ignoring"); + continue; + } + if (!f.canRead()) { + Slog.w(TAG, "Preferred apps file " + f + " cannot be read"); + continue; + } + + FileInputStream str = null; + try { + str = new FileInputStream(f); + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(str, null); + + int type; + while ((type = parser.next()) != XmlPullParser.START_TAG + && type != XmlPullParser.END_DOCUMENT) { + ; + } + + if (type != XmlPullParser.START_TAG) { + Slog.w(TAG, "Preferred apps file " + f + " does not have start tag"); + continue; + } + if (!"preferred-activities".equals(parser.getName())) { + Slog.w(TAG, "Preferred apps file " + f + + " does not start with 'preferred-activities'"); + continue; + } + readPreferredActivitiesLPw(parser); + } catch (XmlPullParserException e) { + Slog.w(TAG, "Error reading apps file " + f, e); + } catch (IOException e) { + Slog.w(TAG, "Error reading apps file " + f, e); + } finally { + if (str != null) { + try { + str.close(); + } catch (IOException e) { + } + } + } + } + } + private int readInt(XmlPullParser parser, String ns, String name, int defValue) { String v = parser.getAttributeValue(ns, name); try { |