MediaBrowserServiceCompat

public abstract class MediaBrowserServiceCompat extends Service


Base class for media browse services.

Media browse services enable applications to browse media content provided by an application and ask the application to start playing it. They may also be used to control content that is already playing by way of a MediaSessionCompat.

To extend this class, you must declare the service in your manifest file with an intent filter with the SERVICE_INTERFACE action. For example:
<service android:name=".MyMediaBrowserServiceCompat"
         android:label="@string/service_name" >
    <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService" />
    </intent-filter>
</service>

Summary

Nested types

Contains information that the browser service needs to send to the client when first connected.

Completion handler for asynchronous callback methods in MediaBrowserServiceCompat.

Constants

static final String
SERVICE_INTERFACE = "android.media.browse.MediaBrowserService"

The Intent that must be declared as handled by the service.

Public constructors

Public methods

void
dump(FileDescriptor fd, PrintWriter writer, String[] args)
final Bundle

Gets the root hints sent from the currently connected MediaBrowserCompat.

final @NonNull MediaSessionManager.RemoteUserInfo

Gets the browser information who sent the current request.

@Nullable MediaSessionCompat.Token

Gets the session token, or null if it has not yet been created or if it has been destroyed.

void

Notifies all connected media browsers that the children of the specified parent id have changed in some way.

void

Notifies all connected media browsers that the children of the specified parent id have changed in some way.

IBinder
onBind(Intent intent)
void
void
onCustomAction(
    @NonNull String action,
    Bundle extras,
    @NonNull MediaBrowserServiceCompat.Result<Bundle> result
)

Called to request a custom action to this service.

void
abstract @Nullable MediaBrowserServiceCompat.BrowserRoot
onGetRoot(
    @NonNull String clientPackageName,
    int clientUid,
    @Nullable Bundle rootHints
)

Called to get the root information for browsing by a particular client.

abstract void

Called to get information about the children of a media item.

void

Called to get information about the children of a media item.

void

Called to get information about a specific media item.

void

Called to get the search result.

void

Call to set the media session.

Inherited Constants

From android.content.ComponentCallbacks2
static final int
static final int
static final int
static final int
static final int
static final int
static final int
From android.content.Context
static final String
ACCESSIBILITY_SERVICE = "accessibility"
static final String
ACCOUNT_SERVICE = "account"
static final String
ACTIVITY_SERVICE = "activity"
static final String
ALARM_SERVICE = "alarm"
static final String
APPWIDGET_SERVICE = "appwidget"
static final String
APP_OPS_SERVICE = "appops"
static final String
APP_SEARCH_SERVICE = "app_search"
static final String
AUDIO_SERVICE = "audio"
static final String
BATTERY_SERVICE = "batterymanager"
static final int
static final int
static final int
static final int
static final int
static final int
static final int
BIND_EXTERNAL_SERVICE = -2147483648
static final long
BIND_EXTERNAL_SERVICE_LONG = 4611686018427387904
static final int
static final int
static final int
static final int
static final int
static final int
static final String
BIOMETRIC_SERVICE = "biometric"
static final String
BLOB_STORE_SERVICE = "blob_store"
static final String
BLUETOOTH_SERVICE = "bluetooth"
static final String
BUGREPORT_SERVICE = "bugreport"
static final String
CAMERA_SERVICE = "camera"
static final String
CAPTIONING_SERVICE = "captioning"
static final String
CARRIER_CONFIG_SERVICE = "carrier_config"
static final String
CLIPBOARD_SERVICE = "clipboard"
static final String
COMPANION_DEVICE_SERVICE = "companiondevice"
static final String
CONNECTIVITY_DIAGNOSTICS_SERVICE = "connectivity_diagnostics"
static final String
CONNECTIVITY_SERVICE = "connectivity"
static final String
CONSUMER_IR_SERVICE = "consumer_ir"
static final int
static final int
static final int
static final String
CREDENTIAL_SERVICE = "credential"
static final String
CROSS_PROFILE_APPS_SERVICE = "crossprofileapps"
static final int
static final int
static final String
DEVICE_LOCK_SERVICE = "device_lock"
static final String
DEVICE_POLICY_SERVICE = "device_policy"
static final String
DISPLAY_HASH_SERVICE = "display_hash"
static final String
DISPLAY_SERVICE = "display"
static final String
DOMAIN_VERIFICATION_SERVICE = "domain_verification"
static final String
DOWNLOAD_SERVICE = "download"
static final String
DROPBOX_SERVICE = "dropbox"
static final String
EUICC_SERVICE = "euicc"
static final String
FILE_INTEGRITY_SERVICE = "file_integrity"
static final String
FINGERPRINT_SERVICE = "fingerprint"
static final String
GAME_SERVICE = "game"
static final String
GRAMMATICAL_INFLECTION_SERVICE = "grammatical_inflection"
static final String
HARDWARE_PROPERTIES_SERVICE = "hardware_properties"
static final String
HEALTHCONNECT_SERVICE = "healthconnect"
static final String
INPUT_METHOD_SERVICE = "input_method"
static final String
INPUT_SERVICE = "input"
static final String
IPSEC_SERVICE = "ipsec"
static final String
JOB_SCHEDULER_SERVICE = "jobscheduler"
static final String
KEYGUARD_SERVICE = "keyguard"
static final String
LAUNCHER_APPS_SERVICE = "launcherapps"
static final String
LAYOUT_INFLATER_SERVICE = "layout_inflater"
static final String
LOCALE_SERVICE = "locale"
static final String
LOCATION_SERVICE = "location"
static final String
MEDIA_COMMUNICATION_SERVICE = "media_communication"
static final String
MEDIA_METRICS_SERVICE = "media_metrics"
static final String
MEDIA_PROJECTION_SERVICE = "media_projection"
static final String
MEDIA_ROUTER_SERVICE = "media_router"
static final String
MEDIA_SESSION_SERVICE = "media_session"
static final String
MIDI_SERVICE = "midi"
static final int
MODE_APPEND = 32768
static final int
static final int

This field is deprecated.

static final int
static final int
static final int

This field is deprecated.

static final int

This field is deprecated.

static final String
static final String
NFC_SERVICE = "nfc"
static final String
NOTIFICATION_SERVICE = "notification"
static final String
NSD_SERVICE = "servicediscovery"
static final String
OVERLAY_SERVICE = "overlay"
static final String
PEOPLE_SERVICE = "people"
static final String
PERFORMANCE_HINT_SERVICE = "performance_hint"
static final String
POWER_SERVICE = "power"
static final String
PRINT_SERVICE = "print"
static final int
static final int
static final int
static final String
RESTRICTIONS_SERVICE = "restrictions"
static final String
ROLE_SERVICE = "role"
static final String
SEARCH_SERVICE = "search"
static final String
SENSOR_SERVICE = "sensor"
static final String
SHORTCUT_SERVICE = "shortcut"
static final String
STATUS_BAR_SERVICE = "statusbar"
static final String
STORAGE_SERVICE = "storage"
static final String
STORAGE_STATS_SERVICE = "storagestats"
static final String
SYSTEM_HEALTH_SERVICE = "systemhealth"
static final String
TELECOM_SERVICE = "telecom"
static final String
TELEPHONY_IMS_SERVICE = "telephony_ims"
static final String
static final String
TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service"
static final String
TEXT_CLASSIFICATION_SERVICE = "textclassification"
static final String
static final String
TV_INPUT_SERVICE = "tv_input"
static final String
TV_INTERACTIVE_APP_SERVICE = "tv_interactive_app"
static final String
UI_MODE_SERVICE = "uimode"
static final String
USAGE_STATS_SERVICE = "usagestats"
static final String
USB_SERVICE = "usb"
static final String
USER_SERVICE = "user"
static final String
VIBRATOR_MANAGER_SERVICE = "vibrator_manager"
static final String
VIBRATOR_SERVICE = "vibrator"

This field is deprecated.

static final String
VIRTUAL_DEVICE_SERVICE = "virtualdevice"
static final String
VPN_MANAGEMENT_SERVICE = "vpn_management"
static final String
WALLPAPER_SERVICE = "wallpaper"
static final String
WIFI_AWARE_SERVICE = "wifiaware"
static final String
WIFI_P2P_SERVICE = "wifip2p"
static final String
static final String
WIFI_SERVICE = "wifi"
static final String
WINDOW_SERVICE = "window"
From android.app.Service
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int

This field is deprecated.

static final int

Inherited methods

From android.content.Context
final int
getColor(int id)
final ColorStateList
final Drawable
getDrawable(int id)
final String
getString(int resId)
final T
<T> getSystemService(Class<T> serviceClass)
final CharSequence
getText(int resId)
final TypedArray
void
void
sendBroadcastWithMultiplePermissions(
    Intent intent,
    String[] receiverPermissions
)
From android.content.ContextWrapper
boolean
bindIsolatedService(
    Intent service,
    int flags,
    String instanceName,
    Executor executor,
    ServiceConnection conn
)
boolean
bindService(Intent service, ServiceConnection conn, int flags)
boolean
bindServiceAsUser(
    Intent service,
    ServiceConnection conn,
    int flags,
    UserHandle user
)
int
int
checkCallingOrSelfUriPermission(Uri uri, int modeFlags)
int[]
checkCallingOrSelfUriPermissions(List<Uri> uris, int modeFlags)
int
int
checkCallingUriPermission(Uri uri, int modeFlags)
int[]
checkCallingUriPermissions(List<Uri> uris, int modeFlags)
int
checkPermission(String permission, int pid, int uid)
int
int
checkUriPermission(Uri uri, int pid, int uid, int modeFlags)
int[]
checkUriPermissions(List<Uri> uris, int pid, int uid, int modeFlags)
void

This method is deprecated.

Context
Context
Context
Context
Context
createDeviceContext(int deviceId)
Context
Context
Context
createPackageContext(String packageName, int flags)
Context
createWindowContext(int type, Bundle options)
String[]
boolean
boolean
boolean
void
void
enforceCallingOrSelfUriPermission(
    Uri uri,
    int modeFlags,
    String message
)
void
enforceCallingPermission(String permission, String message)
void
enforceCallingUriPermission(Uri uri, int modeFlags, String message)
void
enforcePermission(String permission, int pid, int uid, String message)
void
enforceUriPermission(
    Uri uri,
    int pid,
    int uid,
    int modeFlags,
    String message
)
String[]
Context
ApplicationInfo
AssetManager
AttributionSource
String
Context
File
ClassLoader
File
ContentResolver
File
File
int
File
getDir(String name, int mode)
Display
File
File[]
File
File[]
File[]

This method is deprecated.

File
File
Executor
Looper
File
File
File[]
String
String
PackageManager
String
String
ContextParams
Resources
SharedPreferences
getSharedPreferences(String name, int mode)
Object
String
Resources.Theme
Drawable

This method is deprecated.

int

This method is deprecated.

int

This method is deprecated.

void
grantUriPermission(String toPackage, Uri uri, int modeFlags)
boolean
boolean
boolean
boolean
moveDatabaseFrom(Context sourceContext, String name)
boolean
moveSharedPreferencesFrom(Context sourceContext, String name)
FileInputStream
FileOutputStream
openFileOutput(String name, int mode)
SQLiteDatabase
openOrCreateDatabase(
    String name,
    int mode,
    SQLiteDatabase.CursorFactory factory
)
Drawable

This method is deprecated.

void
void
Intent
void

This method is deprecated.

void

This method is deprecated.

void
void
revokeUriPermission(Uri uri, int modeFlags)
void
void
void
sendOrderedBroadcast(Intent intent, String receiverPermission)
void
sendOrderedBroadcastAsUser(
    Intent intent,
    UserHandle user,
    String receiverPermission,
    BroadcastReceiver resultReceiver,
    Handler scheduler,
    int initialCode,
    String initialData,
    Bundle initialExtras
)
void

This method is deprecated.

void

This method is deprecated.

void
sendStickyOrderedBroadcast(
    Intent intent,
    BroadcastReceiver resultReceiver,
    Handler scheduler,
    int initialCode,
    String initialData,
    Bundle initialExtras
)

This method is deprecated.

void
sendStickyOrderedBroadcastAsUser(
    Intent intent,
    UserHandle user,
    BroadcastReceiver resultReceiver,
    Handler scheduler,
    int initialCode,
    String initialData,
    Bundle initialExtras
)

This method is deprecated.

void
setTheme(int resid)
void

This method is deprecated.

void
startActivities(Intent[] intents)
void
ComponentName
boolean
startInstrumentation(
    ComponentName className,
    String profileFile,
    Bundle arguments
)
void
startIntentSender(
    IntentSender intent,
    Intent fillInIntent,
    int flagsMask,
    int flagsValues,
    int extraFlags
)
ComponentName
boolean
void
void
void
void
void
updateServiceGroup(ServiceConnection conn, int group, int importance)
From android.app.Service
void
final Application
final int
void
void
void
onRebind(Intent intent)
void
onStart(Intent intent, int startId)

This method is deprecated.

int
onStartCommand(Intent intent, int flags, int startId)
void
onTaskRemoved(Intent rootIntent)
void
onTimeout(int startId)
void
onTrimMemory(int level)
boolean
onUnbind(Intent intent)
final void
startForeground(int id, Notification notification)
final void
stopForeground(boolean removeNotification)

This method is deprecated.

final void
final boolean
stopSelfResult(int startId)

Constants

SERVICE_INTERFACE

Added in 1.1.0
public static final String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService"

The Intent that must be declared as handled by the service.

Public constructors

MediaBrowserServiceCompat

Added in 1.1.0
public MediaBrowserServiceCompat()

Public methods

dump

Added in 1.1.0
public void dump(FileDescriptor fd, PrintWriter writer, String[] args)

getBrowserRootHints

Added in 1.1.0
public final Bundle getBrowserRootHints()

Gets the root hints sent from the currently connected MediaBrowserCompat. The root hints are service-specific arguments included in an optional bundle sent to the media browser service when connecting and retrieving the root id for browsing, or null if none. The contents of this bundle may affect the information returned when browsing.

Note that this will return null when connected to android.media.browse.MediaBrowser and running on API 23 or lower.

Throws
java.lang.IllegalStateException

If this method is called outside of onLoadChildren, onLoadItem or onSearch.

getCurrentBrowserInfo

Added in 1.1.0
public final @NonNull MediaSessionManager.RemoteUserInfo getCurrentBrowserInfo()

Gets the browser information who sent the current request.

Throws
java.lang.IllegalStateException

If this method is called outside of onGetRoot or onLoadChildren or onLoadItem.

getSessionToken

Added in 1.1.0
public @Nullable MediaSessionCompat.Token getSessionToken()

Gets the session token, or null if it has not yet been created or if it has been destroyed.

notifyChildrenChanged

Added in 1.1.0
public void notifyChildrenChanged(@NonNull String parentId)

Notifies all connected media browsers that the children of the specified parent id have changed in some way. This will cause browsers to fetch subscribed content again.

Parameters
@NonNull String parentId

The id of the parent media item whose children changed.

notifyChildrenChanged

Added in 1.1.0
public void notifyChildrenChanged(@NonNull String parentId, @NonNull Bundle options)

Notifies all connected media browsers that the children of the specified parent id have changed in some way. This will cause browsers to fetch subscribed content again.

Parameters
@NonNull String parentId

The id of the parent media item whose children changed.

@NonNull Bundle options

A bundle of service-specific arguments to send to the media browse. The contents of this bundle may contain the information about the change.

onBind

Added in 1.1.0
public IBinder onBind(Intent intent)

onCreate

public void onCreate()

onCustomAction

Added in 1.1.0
public void onCustomAction(
    @NonNull String action,
    Bundle extras,
    @NonNull MediaBrowserServiceCompat.Result<Bundle> result
)

Called to request a custom action to this service.

Implementations must call either sendResult or sendError. If the requested custom action will be an expensive operation detach may be called before returning from this function, and then the service can send the result later when the custom action is completed. Implementation can also call sendProgressUpdate to send an interim update to the requester.

If the requested custom action is not supported by this service, call sendError. The default implementation will invoke sendError.

Parameters
@NonNull String action

The custom action sent from the media browser.

Bundle extras

The bundle of service-specific arguments sent from the media browser.

@NonNull MediaBrowserServiceCompat.Result<Bundle> result

The Result to send the result of the requested custom action.

onDestroy

@CallSuper
@MainThread
public void onDestroy()

onGetRoot

Added in 1.1.0
public abstract @Nullable MediaBrowserServiceCompat.BrowserRoot onGetRoot(
    @NonNull String clientPackageName,
    int clientUid,
    @Nullable Bundle rootHints
)

Called to get the root information for browsing by a particular client.

The implementation should verify that the client package has permission to access browse media information before returning the root id; it should return null if the client is not allowed to access this information.

Parameters
@NonNull String clientPackageName

The package name of the application which is requesting access to browse media.

int clientUid

The uid of the application which is requesting access to browse media.

@Nullable Bundle rootHints

An optional bundle of service-specific arguments to send to the media browse service when connecting and retrieving the root id for browsing, or null if none. The contents of this bundle may affect the information returned when browsing.

Returns
@Nullable MediaBrowserServiceCompat.BrowserRoot

The BrowserRoot for accessing this app's content or null.

onLoadChildren

Added in 1.1.0
public abstract void onLoadChildren(
    @NonNull String parentId,
    @NonNull MediaBrowserServiceCompat.Result<List<MediaBrowserCompat.MediaItem>> result
)

Called to get information about the children of a media item.

Implementations must call result.sendResult with the list of children. If loading the children will be an expensive operation that should be performed on another thread, result.detach may be called before returning from this function, and then result.sendResult called when the loading is complete.

In case the media item does not have any children, call sendResult with an empty list. When the given parentId is invalid, implementations must call result.sendResult with null, which will invoke onError.

Parameters
@NonNull String parentId

The id of the parent media item whose children are to be queried.

@NonNull MediaBrowserServiceCompat.Result<List<MediaBrowserCompat.MediaItem>> result

The Result to send the list of children to.

onLoadChildren

Added in 1.1.0
public void onLoadChildren(
    @NonNull String parentId,
    @NonNull MediaBrowserServiceCompat.Result<List<MediaBrowserCompat.MediaItem>> result,
    @NonNull Bundle options
)

Called to get information about the children of a media item.

Implementations must call result.sendResult with the list of children. If loading the children will be an expensive operation that should be performed on another thread, result.detach may be called before returning from this function, and then result.sendResult called when the loading is complete.

In case the media item does not have any children, call sendResult with an empty list. When the given parentId is invalid, implementations must call result.sendResult with null, which will invoke onError.

Parameters
@NonNull String parentId

The id of the parent media item whose children are to be queried.

@NonNull MediaBrowserServiceCompat.Result<List<MediaBrowserCompat.MediaItem>> result

The Result to send the list of children to.

@NonNull Bundle options

A bundle of service-specific arguments sent from the media browse. The information returned through the result should be affected by the contents of this bundle.

onLoadItem

Added in 1.1.0
public void onLoadItem(
    String itemId,
    @NonNull MediaBrowserServiceCompat.Result<MediaBrowserCompat.MediaItem> result
)

Called to get information about a specific media item.

Implementations must call result.sendResult. If loading the item will be an expensive operation result.detach may be called before returning from this function, and then result.sendResult called when the item has been loaded.

When the given itemId is invalid, implementations must call result.sendResult with null.

The default implementation will invoke onError.

Parameters
String itemId

The id for the specific MediaBrowserCompat.MediaItem.

@NonNull MediaBrowserServiceCompat.Result<MediaBrowserCompat.MediaItem> result

The Result to send the item to, or null if the id is invalid.

onSearch

Added in 1.1.0
public void onSearch(
    @NonNull String query,
    Bundle extras,
    @NonNull MediaBrowserServiceCompat.Result<List<MediaBrowserCompat.MediaItem>> result
)

Called to get the search result.

Implementations must call result.sendResult. If the search will be an expensive operation result.detach may be called before returning from this function, and then result.sendResult called when the search has been completed.

In case there are no search results, call result.sendResult with an empty list. In case there are some errors happened, call result.sendResult with null, which will invoke onError.

The default implementation will invoke onError.

Parameters
@NonNull String query

The search query sent from the media browser. It contains keywords separated by space.

Bundle extras

The bundle of service-specific arguments sent from the media browser.

@NonNull MediaBrowserServiceCompat.Result<List<MediaBrowserCompat.MediaItem>> result

The Result to send the search result.

setSessionToken

Added in 1.1.0
public void setSessionToken(MediaSessionCompat.Token token)

Call to set the media session.

This should be called as soon as possible during the service's startup. It may only be called once.

Parameters
MediaSessionCompat.Token token

The token for the service's MediaSessionCompat.