115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2007 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 21eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackbornimport android.util.Printer; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about a particular application 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * service. This corresponds to information collected from the 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AndroidManifest.xml's <service> tags. 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ServiceInfo extends ComponentInfo 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements Parcelable { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Optional name of a permission required to be able to access this 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Service. From the "permission" attribute. 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String permission; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 360c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn /** 370c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * Bit in {@link #flags}: If set, the service will automatically be 380c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * stopped by the system if the user removes a task that is rooted 390c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * in one of the application's activities. Set from the 400c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * {@link android.R.attr#stopWithTask} attribute. 410c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn */ 420c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn public static final int FLAG_STOP_WITH_TASK = 0x0001; 430c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn 440c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn /** 45a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn * Bit in {@link #flags}: If set, the service will run in its own 46a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn * isolated process. Set from the 47a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn * {@link android.R.attr#isolatedProcess} attribute. 48a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn */ 49a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn public static final int FLAG_ISOLATED_PROCESS = 0x0002; 50a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn 51a0c283eac33dd2da72235751bbfa4f2d9898d5eaDianne Hackborn /** 52b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek * Bit in {@link #flags}: If set, the service can be bound and run in the 53b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek * calling application's package, rather than the package in which it is 54b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek * declared. Set from {@link android.R.attr#externalService} attribute. 55b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek */ 56b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek public static final int FLAG_EXTERNAL_SERVICE = 0x0004; 57b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek 58b9a8666eb5504f022343fef9087135b7d937ddf8Robert Sesek /** 59b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn * Bit in {@link #flags}: If set, a single instance of the service will 60b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn * run for all users on the device. Set from the 61b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn * {@link android.R.attr#singleUser} attribute. 62b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn */ 637d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn public static final int FLAG_SINGLE_USER = 0x40000000; 64b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn 65b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn /** 660c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * Options that have been set in the service declaration in the 670c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * manifest. 680c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn * These include: 697d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * {@link #FLAG_STOP_WITH_TASK}, {@link #FLAG_ISOLATED_PROCESS}, 707d19e0242faac8017033dabb872cdf1542fa184cDianne Hackborn * {@link #FLAG_SINGLE_USER}. 710c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn */ 720c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn public int flags; 730c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo() { 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo(ServiceInfo orig) { 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(orig); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project permission = orig.permission; 800c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn flags = orig.flags; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 83eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn public void dump(Printer pw, String prefix) { 846ac42aeed905181b484f97a53db57a17134ef7a8Dianne Hackborn dump(pw, prefix, DUMP_FLAG_ALL); 856ac42aeed905181b484f97a53db57a17134ef7a8Dianne Hackborn } 866ac42aeed905181b484f97a53db57a17134ef7a8Dianne Hackborn 876ac42aeed905181b484f97a53db57a17134ef7a8Dianne Hackborn /** @hide */ 886ac42aeed905181b484f97a53db57a17134ef7a8Dianne Hackborn void dump(Printer pw, String prefix, int flags) { 89eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn super.dumpFront(pw, prefix); 90eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn pw.println(prefix + "permission=" + permission); 910c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn pw.println(prefix + "flags=0x" + Integer.toHexString(flags)); 926ac42aeed905181b484f97a53db57a17134ef7a8Dianne Hackborn super.dumpBack(pw, prefix, flags); 93eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn } 94eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "ServiceInfo{" 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + name + "}"; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags) { 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.writeToParcel(dest, parcelableFlags); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(permission); 1080c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn dest.writeInt(flags); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<ServiceInfo> CREATOR = 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Creator<ServiceInfo>() { 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo createFromParcel(Parcel source) { 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceInfo(source); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo[] newArray(int size) { 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceInfo[size]; 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ServiceInfo(Parcel source) { 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(source); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project permission = source.readString(); 1240c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn flags = source.readInt(); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 127