14b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/* 24b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Copyright (C) 2013 The Android Open Source Project 34b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 44b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 54b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * you may not use this file except in compliance with the License. 64b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * You may obtain a copy of the License at 74b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 84b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 94b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Unless required by applicable law or agreed to in writing, software 114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * See the License for the specific language governing permissions and 144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * limitations under the License. 154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpackage android.printservice; 184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.ComponentName; 204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.Context; 214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.pm.PackageManager; 224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.pm.PackageManager.NameNotFoundException; 234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.pm.ResolveInfo; 244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.res.Resources; 254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.res.TypedArray; 264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.res.XmlResourceParser; 274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcel; 284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcelable; 294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.util.AttributeSet; 304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.util.Log; 314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.util.Xml; 324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport org.xmlpull.v1.XmlPullParser; 344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport org.xmlpull.v1.XmlPullParserException; 354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport java.io.IOException; 374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/** 394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * This class describes a {@link PrintService}. A print service knows 404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * how to communicate with one or more printers over one or more protocols 414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * and exposes printers for use by the applications via the platform print 424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * APIs. 434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @see PrintService 454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @see android.print.PrintManager 464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpublic final class PrintServiceInfo implements Parcelable { 504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private static final String LOG_TAG = PrintServiceInfo.class.getSimpleName(); 524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private static final String TAG_PRINT_SERVICE = "print-service"; 544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final String mId; 564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final ResolveInfo mResolveInfo; 584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final String mSettingsActivityName; 604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final String mAddPrintersActivityName; 624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 63b4fda134761c9521a7e127db3806a07a18763b77Svetoslav private final String mAdvancedPrintOptionsActivityName; 64b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 684b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 694b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo(Parcel parcel) { 714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mId = parcel.readString(); 724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mResolveInfo = parcel.readParcelable(null); 734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mSettingsActivityName = parcel.readString(); 744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mAddPrintersActivityName = parcel.readString(); 75b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedPrintOptionsActivityName = parcel.readString(); 764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param resolveInfo The service resolve info. 824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param settingsActivityName Optional settings activity name. 834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param addPrintersActivityName Optional add printers activity name. 84b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @param advancedPrintOptionsActivityName Optional advanced print options activity. 854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo(ResolveInfo resolveInfo, String settingsActivityName, 87b4fda134761c9521a7e127db3806a07a18763b77Svetoslav String addPrintersActivityName, String advancedPrintOptionsActivityName) { 884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mId = new ComponentName(resolveInfo.serviceInfo.packageName, 894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov resolveInfo.serviceInfo.name).flattenToString(); 904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mResolveInfo = resolveInfo; 914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mSettingsActivityName = settingsActivityName; 924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mAddPrintersActivityName = addPrintersActivityName; 93b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedPrintOptionsActivityName = advancedPrintOptionsActivityName; 944b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 954b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 964b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 994b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param resolveInfo The service resolve info. 1004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param context Context for accessing resources. 1014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @throws XmlPullParserException If a XML parsing error occurs. 1024b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @throws IOException If a I/O error occurs. 1034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static PrintServiceInfo create(ResolveInfo resolveInfo, Context context) { 1054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov String settingsActivityName = null; 1064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov String addPrintersActivityName = null; 107b4fda134761c9521a7e127db3806a07a18763b77Svetoslav String advancedPrintOptionsActivityName = null; 1084b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1094b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov XmlResourceParser parser = null; 1104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PackageManager packageManager = context.getPackageManager(); 1114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parser = resolveInfo.serviceInfo.loadXmlMetaData(packageManager, 1124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PrintService.SERVICE_META_DATA); 1134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (parser != null) { 1144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov try { 1154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov int type = 0; 1164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) { 1174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov type = parser.next(); 1184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov String nodeName = parser.getName(); 1214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (!TAG_PRINT_SERVICE.equals(nodeName)) { 1228c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov Log.e(LOG_TAG, "Ignoring meta-data that does not start with " 1238c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov + TAG_PRINT_SERVICE + " tag"); 1248c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov } else { 1258c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov Resources resources = packageManager.getResourcesForApplication( 1268c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov resolveInfo.serviceInfo.applicationInfo); 1278c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov AttributeSet allAttributes = Xml.asAttributeSet(parser); 1288c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov TypedArray attributes = resources.obtainAttributes(allAttributes, 1298c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov com.android.internal.R.styleable.PrintService); 1308c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov 1318c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov settingsActivityName = attributes.getString( 1328c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov com.android.internal.R.styleable.PrintService_settingsActivity); 1338c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov 1348c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov addPrintersActivityName = attributes.getString( 1358c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov com.android.internal.R.styleable.PrintService_addPrintersActivity); 1368c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov 137b4fda134761c9521a7e127db3806a07a18763b77Svetoslav advancedPrintOptionsActivityName = attributes.getString(com.android.internal 138b4fda134761c9521a7e127db3806a07a18763b77Svetoslav .R.styleable.PrintService_advancedPrintOptionsActivity); 139b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 1408c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov attributes.recycle(); 1414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } catch (IOException ioe) { 1434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov Log.w(LOG_TAG, "Error reading meta-data:" + ioe); 1444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } catch (XmlPullParserException xppe) { 1454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov Log.w(LOG_TAG, "Error reading meta-data:" + xppe); 1464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } catch (NameNotFoundException e) { 1474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov Log.e(LOG_TAG, "Unable to load resources for: " 1484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov + resolveInfo.serviceInfo.packageName); 1494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } finally { 1504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (parser != null) { 1514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parser.close(); 1524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 156b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return new PrintServiceInfo(resolveInfo, settingsActivityName, 157b4fda134761c9521a7e127db3806a07a18763b77Svetoslav addPrintersActivityName, advancedPrintOptionsActivityName); 1584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The accessibility service id. 1624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <strong>Generated by the system.</strong> 1644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 1664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The id. 1674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1684b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getId() { 1694b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mId; 1704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The service {@link ResolveInfo}. 1744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 1754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The info. 1764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public ResolveInfo getResolveInfo() { 1784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mResolveInfo; 1794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The settings activity name. 1834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <strong>Statically set from 1854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> 1864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 1884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The settings activity name. 1894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getSettingsActivityName() { 1914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mSettingsActivityName; 1924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1934b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1944b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1954b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The add printers activity name. 1964b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <strong>Statically set from 1984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> 1994b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 2004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The add printers activity name. 2024b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 2034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getAddPrintersActivityName() { 2044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mAddPrintersActivityName; 2054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2074b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 208b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * The advanced print options activity name. 209b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * <p> 210b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * <strong>Statically set from 211b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> 212b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * </p> 213b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 214b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @return The advanced print options activity name. 215b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 216b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public String getAdvancedOptionsActivityName() { 217b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return mAdvancedPrintOptionsActivityName; 218b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 219b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 220b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 2214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@inheritDoc} 2224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 2234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int describeContents() { 2244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return 0; 2254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void writeToParcel(Parcel parcel, int flagz) { 2284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeString(mId); 2294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeParcelable(mResolveInfo, 0); 2304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeString(mSettingsActivityName); 2314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeString(mAddPrintersActivityName); 232b4fda134761c9521a7e127db3806a07a18763b77Svetoslav parcel.writeString(mAdvancedPrintOptionsActivityName); 2334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 2364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int hashCode() { 237a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return 31 + ((mId == null) ? 0 : mId.hashCode()); 2384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 2414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public boolean equals(Object obj) { 2424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (this == obj) { 2434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return true; 2444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (obj == null) { 2464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 2474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (getClass() != obj.getClass()) { 2494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 2504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PrintServiceInfo other = (PrintServiceInfo) obj; 2524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (mId == null) { 2534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (other.mId != null) { 2544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 2554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } else if (!mId.equals(other.mId)) { 2574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 2584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return true; 2604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 2634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String toString() { 2644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov StringBuilder builder = new StringBuilder(); 2654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("PrintServiceInfo{"); 266b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append("id=").append(mId); 267b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append(", resolveInfo=").append(mResolveInfo); 268b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append(", settingsActivityName=").append(mSettingsActivityName); 269b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append(", addPrintersActivityName=").append(mAddPrintersActivityName); 270b4fda134761c9521a7e127db3806a07a18763b77Svetoslav builder.append(", advancedPrintOptionsActivityName=") 271b4fda134761c9521a7e127db3806a07a18763b77Svetoslav .append(mAdvancedPrintOptionsActivityName); 2724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("}"); 2734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return builder.toString(); 2744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final Parcelable.Creator<PrintServiceInfo> CREATOR = 2774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov new Parcelable.Creator<PrintServiceInfo>() { 2784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo createFromParcel(Parcel parcel) { 2794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrintServiceInfo(parcel); 2804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo[] newArray(int size) { 2834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrintServiceInfo[size]; 2844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov }; 2864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov} 287