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 198141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmannimport android.annotation.NonNull; 207e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmannimport android.annotation.SystemApi; 214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.ComponentName; 224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.Context; 234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.pm.PackageManager; 244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.pm.PackageManager.NameNotFoundException; 254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.pm.ResolveInfo; 264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.res.Resources; 274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.res.TypedArray; 284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.res.XmlResourceParser; 294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcel; 304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcelable; 314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.util.AttributeSet; 324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.util.Log; 334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.util.Xml; 344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport org.xmlpull.v1.XmlPullParser; 364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport org.xmlpull.v1.XmlPullParserException; 374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport java.io.IOException; 394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/** 414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * This class describes a {@link PrintService}. A print service knows 424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * how to communicate with one or more printers over one or more protocols 434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * and exposes printers for use by the applications via the platform print 444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * APIs. 454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @see PrintService 474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @see android.print.PrintManager 484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 517e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann@SystemApi 524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpublic final class PrintServiceInfo implements Parcelable { 534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private static final String LOG_TAG = PrintServiceInfo.class.getSimpleName(); 554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private static final String TAG_PRINT_SERVICE = "print-service"; 574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final String mId; 594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 6066c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann private boolean mIsEnabled; 6166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final ResolveInfo mResolveInfo; 634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final String mSettingsActivityName; 654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private final String mAddPrintersActivityName; 674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 68b4fda134761c9521a7e127db3806a07a18763b77Svetoslav private final String mAdvancedPrintOptionsActivityName; 69b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo(Parcel parcel) { 764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mId = parcel.readString(); 7766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann mIsEnabled = parcel.readByte() != 0; 784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mResolveInfo = parcel.readParcelable(null); 794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mSettingsActivityName = parcel.readString(); 804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mAddPrintersActivityName = parcel.readString(); 81b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedPrintOptionsActivityName = parcel.readString(); 824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param resolveInfo The service resolve info. 884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param settingsActivityName Optional settings activity name. 894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param addPrintersActivityName Optional add printers activity name. 90b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @param advancedPrintOptionsActivityName Optional advanced print options activity. 917e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 927e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 934b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 944b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo(ResolveInfo resolveInfo, String settingsActivityName, 95b4fda134761c9521a7e127db3806a07a18763b77Svetoslav String addPrintersActivityName, String advancedPrintOptionsActivityName) { 964b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mId = new ComponentName(resolveInfo.serviceInfo.packageName, 974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov resolveInfo.serviceInfo.name).flattenToString(); 984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mResolveInfo = resolveInfo; 994b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mSettingsActivityName = settingsActivityName; 1004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mAddPrintersActivityName = addPrintersActivityName; 101b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedPrintOptionsActivityName = advancedPrintOptionsActivityName; 1024b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1058141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann * Return the component name for this print service. 1068141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann * 1078141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann * @return The component name for this print service. 1088141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann */ 1098141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann public @NonNull ComponentName getComponentName() { 1108141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann return new ComponentName(mResolveInfo.serviceInfo.packageName, 1118141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann mResolveInfo.serviceInfo.name); 1128141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann } 1138141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann 1148141bdfa56f13c3946bed12ba7801e492ec25c11Philip P. Moltmann /** 1154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 1164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 1174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param context Context for accessing resources. 1187e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @param resolveInfo The service resolve info. 119c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann * @return The created instance. 1207e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 1217e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 1224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1237e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann public static PrintServiceInfo create(Context context, ResolveInfo resolveInfo) { 1244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov String settingsActivityName = null; 1254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov String addPrintersActivityName = null; 126b4fda134761c9521a7e127db3806a07a18763b77Svetoslav String advancedPrintOptionsActivityName = null; 1274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov XmlResourceParser parser = null; 1294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PackageManager packageManager = context.getPackageManager(); 1304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parser = resolveInfo.serviceInfo.loadXmlMetaData(packageManager, 1314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PrintService.SERVICE_META_DATA); 1324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (parser != null) { 1334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov try { 1344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov int type = 0; 1354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) { 1364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov type = parser.next(); 1374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov String nodeName = parser.getName(); 1404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (!TAG_PRINT_SERVICE.equals(nodeName)) { 1418c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov Log.e(LOG_TAG, "Ignoring meta-data that does not start with " 1428c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov + TAG_PRINT_SERVICE + " tag"); 1438c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov } else { 1448c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov Resources resources = packageManager.getResourcesForApplication( 1458c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov resolveInfo.serviceInfo.applicationInfo); 1468c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov AttributeSet allAttributes = Xml.asAttributeSet(parser); 1478c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov TypedArray attributes = resources.obtainAttributes(allAttributes, 1488c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov com.android.internal.R.styleable.PrintService); 1498c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov 1508c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov settingsActivityName = attributes.getString( 1518c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov com.android.internal.R.styleable.PrintService_settingsActivity); 1528c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov 1538c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov addPrintersActivityName = attributes.getString( 1548c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov com.android.internal.R.styleable.PrintService_addPrintersActivity); 1558c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov 156b4fda134761c9521a7e127db3806a07a18763b77Svetoslav advancedPrintOptionsActivityName = attributes.getString(com.android.internal 157b4fda134761c9521a7e127db3806a07a18763b77Svetoslav .R.styleable.PrintService_advancedPrintOptionsActivity); 158b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 1598c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov attributes.recycle(); 1604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } catch (IOException ioe) { 1624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov Log.w(LOG_TAG, "Error reading meta-data:" + ioe); 1634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } catch (XmlPullParserException xppe) { 1644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov Log.w(LOG_TAG, "Error reading meta-data:" + xppe); 1654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } catch (NameNotFoundException e) { 1664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov Log.e(LOG_TAG, "Unable to load resources for: " 1674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov + resolveInfo.serviceInfo.packageName); 1684b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } finally { 1694b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (parser != null) { 1704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parser.close(); 1714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 175b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return new PrintServiceInfo(resolveInfo, settingsActivityName, 176b4fda134761c9521a7e127db3806a07a18763b77Svetoslav addPrintersActivityName, advancedPrintOptionsActivityName); 1774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The accessibility service id. 1814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <strong>Generated by the system.</strong> 1834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 1854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The id. 1867e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 1877e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 1884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getId() { 1904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mId; 1914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1934b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 19466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * If the service was enabled when it was read from the system. 19566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * 19666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * @return The id. 1977e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 1987e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 19966c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann */ 20066c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann public boolean isEnabled() { 20166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann return mIsEnabled; 20266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann } 20366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 20466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann /** 20566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * Mark a service as enabled or not 20666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * 20766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * @param isEnabled If the service should be marked as enabled. 2087e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 2097e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 21066c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann */ 21166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann public void setIsEnabled(boolean isEnabled) { 21266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann mIsEnabled = isEnabled; 21366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann } 21466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 21566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann /** 2164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The service {@link ResolveInfo}. 2174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The info. 2197e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 2207e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 2214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 2224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public ResolveInfo getResolveInfo() { 2234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mResolveInfo; 2244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The settings activity name. 2284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 2294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <strong>Statically set from 2304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> 2314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 2324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The settings activity name. 2347e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 2357e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 2364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 2374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getSettingsActivityName() { 2384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mSettingsActivityName; 2394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The add printers activity name. 2434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 2444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <strong>Statically set from 2454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> 2464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 2474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The add printers activity name. 2497e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 2507e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 2514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 2524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getAddPrintersActivityName() { 2534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mAddPrintersActivityName; 2544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 257b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * The advanced print options activity name. 258b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * <p> 259b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * <strong>Statically set from 260b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> 261b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * </p> 262b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 263b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @return The advanced print options activity name. 2647e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * 2657e01895e6972c0ebc552215b1207a519529af3fdPhilip P. Moltmann * @hide 266b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 267b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public String getAdvancedOptionsActivityName() { 268b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return mAdvancedPrintOptionsActivityName; 269b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 270b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 271b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 2724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@inheritDoc} 2734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 274c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann @Override 2754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int describeContents() { 2764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return 0; 2774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 279c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann @Override 2804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void writeToParcel(Parcel parcel, int flagz) { 2814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeString(mId); 28266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann parcel.writeByte((byte)(mIsEnabled ? 1 : 0)); 2834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeParcelable(mResolveInfo, 0); 2844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeString(mSettingsActivityName); 2854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeString(mAddPrintersActivityName); 286b4fda134761c9521a7e127db3806a07a18763b77Svetoslav parcel.writeString(mAdvancedPrintOptionsActivityName); 2874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 2904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int hashCode() { 291a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return 31 + ((mId == null) ? 0 : mId.hashCode()); 2924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2934b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2944b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 2954b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public boolean equals(Object obj) { 2964b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (this == obj) { 2974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return true; 2984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2994b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (obj == null) { 3004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 3014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3024b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (getClass() != obj.getClass()) { 3034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 3044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PrintServiceInfo other = (PrintServiceInfo) obj; 3064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (mId == null) { 3074b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (other.mId != null) { 3084b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 3094b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } else if (!mId.equals(other.mId)) { 3114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 3124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return true; 3144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 3164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 3174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String toString() { 3184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov StringBuilder builder = new StringBuilder(); 3194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("PrintServiceInfo{"); 320b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append("id=").append(mId); 32166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann builder.append("isEnabled=").append(mIsEnabled); 322b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append(", resolveInfo=").append(mResolveInfo); 323b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append(", settingsActivityName=").append(mSettingsActivityName); 324b669917825a49421ee79be4819ead765f5de8aaeSvetoslav Ganov builder.append(", addPrintersActivityName=").append(mAddPrintersActivityName); 325b4fda134761c9521a7e127db3806a07a18763b77Svetoslav builder.append(", advancedPrintOptionsActivityName=") 326b4fda134761c9521a7e127db3806a07a18763b77Svetoslav .append(mAdvancedPrintOptionsActivityName); 3274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("}"); 3284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return builder.toString(); 3294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 3314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final Parcelable.Creator<PrintServiceInfo> CREATOR = 3324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov new Parcelable.Creator<PrintServiceInfo>() { 333c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann @Override 3344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo createFromParcel(Parcel parcel) { 3354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrintServiceInfo(parcel); 3364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 338c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann @Override 3394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintServiceInfo[] newArray(int size) { 3404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrintServiceInfo[size]; 3414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov }; 3434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov} 344