1cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root/* 2cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Copyright (C) 2011 The Android Open Source Project 3cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * 4cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * you may not use this file except in compliance with the License. 6cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * You may obtain a copy of the License at 7cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * 8cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * http://www.apache.org/licenses/LICENSE-2.0 9cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * 10cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Unless required by applicable law or agreed to in writing, software 11cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * See the License for the specific language governing permissions and 14cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * limitations under the License. 15cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root */ 16cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 17cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootpackage com.android.server.pm; 18cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 19cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport com.android.internal.util.XmlUtils; 20cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 21cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport org.xmlpull.v1.XmlPullParser; 22cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport org.xmlpull.v1.XmlPullParserException; 23cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport org.xmlpull.v1.XmlSerializer; 24cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 25cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport android.content.ComponentName; 26cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport android.content.IntentFilter; 27cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport android.util.Log; 28cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 29cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport java.io.IOException; 30cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 31cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootclass PreferredActivity extends IntentFilter implements PreferredComponent.Callbacks { 32cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root private static final String TAG = "PreferredActivity"; 33cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 34cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root private static final boolean DEBUG_FILTERS = false; 35cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 36cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root final PreferredComponent mPref; 37cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 38e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani PreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity, 39e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani boolean always) { 40cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root super(filter); 41e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani mPref = new PreferredComponent(this, match, set, activity, always); 42cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 43cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 44cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root PreferredActivity(XmlPullParser parser) throws XmlPullParserException, IOException { 45cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root mPref = new PreferredComponent(this, parser); 46cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 47cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 488a2ed1d7c0c4f6476e39cc37d9ebd29c7562ce01Dianne Hackborn public void writeToXml(XmlSerializer serializer, boolean full) throws IOException { 498a2ed1d7c0c4f6476e39cc37d9ebd29c7562ce01Dianne Hackborn mPref.writeToXml(serializer, full); 50cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root serializer.startTag(null, "filter"); 51a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani super.writeToXml(serializer); 52cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root serializer.endTag(null, "filter"); 53cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 54cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 55cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root public boolean onReadTag(String tagName, XmlPullParser parser) throws XmlPullParserException, 56cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root IOException { 57cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root if (tagName.equals("filter")) { 58cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root if (DEBUG_FILTERS) { 59cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root Log.i(TAG, "Starting to parse filter..."); 60cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 61cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root readFromXml(parser); 62cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root if (DEBUG_FILTERS) { 63cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root Log.i(TAG, "Finished filter: depth=" + parser.getDepth() + " tag=" 64cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root + parser.getName()); 65cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 66cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } else { 67cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root PackageManagerService.reportSettingsProblem(Log.WARN, 68cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root "Unknown element under <preferred-activities>: " + parser.getName()); 69cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root XmlUtils.skipCurrentTag(parser); 70cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 71cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root return true; 72cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 7338ba6e9ee3e634914153c2181f050a2bb250e484Dianne Hackborn 7438ba6e9ee3e634914153c2181f050a2bb250e484Dianne Hackborn @Override 7538ba6e9ee3e634914153c2181f050a2bb250e484Dianne Hackborn public String toString() { 7638ba6e9ee3e634914153c2181f050a2bb250e484Dianne Hackborn return "PreferredActivity{0x" + Integer.toHexString(System.identityHashCode(this)) 7738ba6e9ee3e634914153c2181f050a2bb250e484Dianne Hackborn + " " + mPref.mComponent.flattenToShortString() + "}"; 7838ba6e9ee3e634914153c2181f050a2bb250e484Dianne Hackborn } 79cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root} 80