summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/pm/Settings.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-06-18 16:21:43 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-06-18 16:21:43 -0700
commit56b3a321e7c6f03d1bc0c5c0915d56bc46b7a33e (patch)
treec0b9f29e66733fd1b828960258f09a1da25a5265 /services/java/com/android/server/pm/Settings.java
parent81c61fda9a1b45db4c06d2db2cf24b42045d4f76 (diff)
parent1991850de7bbcc534c2cb457f33055c533542136 (diff)
downloadframeworks_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.java79
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 {