Home | History | Annotate | Download | only in pm
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.content.pm;
     18 
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 import android.util.Printer;
     22 
     23 /**
     24  * Information you can retrieve about a particular application
     25  * service. This corresponds to information collected from the
     26  * AndroidManifest.xml's <service> tags.
     27  */
     28 public class ServiceInfo extends ComponentInfo
     29         implements Parcelable {
     30     /**
     31      * Optional name of a permission required to be able to access this
     32      * Service.  From the "permission" attribute.
     33      */
     34     public String permission;
     35 
     36     /**
     37      * Bit in {@link #flags}: If set, the service will automatically be
     38      * stopped by the system if the user removes a task that is rooted
     39      * in one of the application's activities.  Set from the
     40      * {@link android.R.attr#stopWithTask} attribute.
     41      */
     42     public static final int FLAG_STOP_WITH_TASK = 0x0001;
     43 
     44     /**
     45      * Bit in {@link #flags}: If set, the service will run in its own
     46      * isolated process.  Set from the
     47      * {@link android.R.attr#isolatedProcess} attribute.
     48      */
     49     public static final int FLAG_ISOLATED_PROCESS = 0x0002;
     50 
     51     /**
     52      * Options that have been set in the service declaration in the
     53      * manifest.
     54      * These include:
     55      * {@link #FLAG_STOP_WITH_TASK}, {@link #FLAG_ISOLATED_PROCESS}.
     56      */
     57     public int flags;
     58 
     59     public ServiceInfo() {
     60     }
     61 
     62     public ServiceInfo(ServiceInfo orig) {
     63         super(orig);
     64         permission = orig.permission;
     65         flags = orig.flags;
     66     }
     67 
     68     public void dump(Printer pw, String prefix) {
     69         super.dumpFront(pw, prefix);
     70         pw.println(prefix + "permission=" + permission);
     71         pw.println(prefix + "flags=0x" + Integer.toHexString(flags));
     72     }
     73 
     74     public String toString() {
     75         return "ServiceInfo{"
     76             + Integer.toHexString(System.identityHashCode(this))
     77             + " " + name + "}";
     78     }
     79 
     80     public int describeContents() {
     81         return 0;
     82     }
     83 
     84     public void writeToParcel(Parcel dest, int parcelableFlags) {
     85         super.writeToParcel(dest, parcelableFlags);
     86         dest.writeString(permission);
     87         dest.writeInt(flags);
     88     }
     89 
     90     public static final Creator<ServiceInfo> CREATOR =
     91         new Creator<ServiceInfo>() {
     92         public ServiceInfo createFromParcel(Parcel source) {
     93             return new ServiceInfo(source);
     94         }
     95         public ServiceInfo[] newArray(int size) {
     96             return new ServiceInfo[size];
     97         }
     98     };
     99 
    100     private ServiceInfo(Parcel source) {
    101         super(source);
    102         permission = source.readString();
    103         flags = source.readInt();
    104     }
    105 }
    106