/*
 * Copyright (C) 2006 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.os;

Basic interface for finding and publishing system services. An implementation of this interface is usually published as the global context object, which can be retrieved via BinderNative.getContextObject(). An easy way to retrieve this is with the static method BnServiceManager.getDefault().
@hide
/** * Basic interface for finding and publishing system services. * * An implementation of this interface is usually published as the * global context object, which can be retrieved via * BinderNative.getContextObject(). An easy way to retrieve this * is with the static method BnServiceManager.getDefault(). * * @hide */
public interface IServiceManager extends IInterface {
Retrieve an existing service called @a name from the service manager. Blocks for a few seconds waiting for it to be published if it does not already exist.
/** * Retrieve an existing service called @a name from the * service manager. Blocks for a few seconds waiting for it to be * published if it does not already exist. */
IBinder getService(String name) throws RemoteException;
Retrieve an existing service called @a name from the service manager. Non-blocking.
/** * Retrieve an existing service called @a name from the * service manager. Non-blocking. */
IBinder checkService(String name) throws RemoteException;
Place a new @a service called @a name into the service manager.
/** * Place a new @a service called @a name into the service * manager. */
void addService(String name, IBinder service, boolean allowIsolated, int dumpFlags) throws RemoteException;
Return a list of all currently running services.
/** * Return a list of all currently running services. */
String[] listServices(int dumpFlags) throws RemoteException;
Assign a permission controller to the service manager. After set, this interface is checked before any services are added.
/** * Assign a permission controller to the service manager. After set, this * interface is checked before any services are added. */
void setPermissionController(IPermissionController controller) throws RemoteException; static final String descriptor = "android.os.IServiceManager"; int GET_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION; int CHECK_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1; int ADD_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2; int LIST_SERVICES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3; int CHECK_SERVICES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4; int SET_PERMISSION_CONTROLLER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+5; /* * Must update values in IServiceManager.h */ /* Allows services to dump sections according to priorities. */ int DUMP_FLAG_PRIORITY_CRITICAL = 1 << 0; int DUMP_FLAG_PRIORITY_HIGH = 1 << 1; int DUMP_FLAG_PRIORITY_NORMAL = 1 << 2;
Services are by default registered with a DEFAULT dump priority. DEFAULT priority has the same priority as NORMAL priority but the services are not called with dump priority arguments.
/** * Services are by default registered with a DEFAULT dump priority. DEFAULT priority has the * same priority as NORMAL priority but the services are not called with dump priority * arguments. */
int DUMP_FLAG_PRIORITY_DEFAULT = 1 << 3; int DUMP_FLAG_PRIORITY_ALL = DUMP_FLAG_PRIORITY_CRITICAL | DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL | DUMP_FLAG_PRIORITY_DEFAULT; /* Allows services to dump sections in protobuf format. */ int DUMP_FLAG_PROTO = 1 << 4; }