public class

CarAppMetadataHolderService

extends Service

 java.lang.Object

↳Service

↳androidx.car.app.CarAppMetadataHolderService

Gradle dependencies

compile group: 'androidx.car.app', name: 'app', version: '1.7.0-beta01'

  • groupId: androidx.car.app
  • artifactId: app
  • version: 1.7.0-beta01

Artifact androidx.car.app:app:1.7.0-beta01 it located at Google repository (https://maven.google.com/)

Overview

A placeholder service to avoid adding application-level metadata.

The service is only used to expose metadata defined in the library's manifest.

Summary

Methods
public static ServiceInfogetServiceInfo(Context context)

Returns the for the declared CarAppMetadataHolderService.

public IBinderonBind(Intent intent)

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public IBinder onBind(Intent intent)

public static ServiceInfo getServiceInfo(Context context)

Returns the for the declared CarAppMetadataHolderService.

Source

/*
 * Copyright 2021 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 androidx.car.app;

import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.os.Build;
import android.os.IBinder;

import androidx.annotation.DoNotInline;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;

/**
 * A placeholder service to avoid adding application-level metadata.
 *
 * <p>The service is only used to expose metadata defined in the library's manifest.
 *
 */
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class CarAppMetadataHolderService extends Service {
    @Nullable
    @Override
    public IBinder onBind(@NonNull Intent intent) {
        throw new UnsupportedOperationException();
    }

    private CarAppMetadataHolderService() {
    }

    /**
     * Returns the {@link ServiceInfo} for the declared {@link CarAppMetadataHolderService}.
     */
    @NonNull
    @SuppressWarnings("deprecation") // GET_DISABLED_COMPONENTS, getServiceInfo
    public static ServiceInfo getServiceInfo(@NonNull Context context) throws
            PackageManager.NameNotFoundException {
        int flags = PackageManager.GET_META_DATA;
        // The service is marked as disabled so we need to include the following flags.
        if (Build.VERSION.SDK_INT >= 24) {
            flags |= Api24Impl.getDisabledComponentFlag();
        } else {
            flags |= PackageManager.GET_DISABLED_COMPONENTS;
        }

        return context.getPackageManager().getServiceInfo(
                new ComponentName(context, CarAppMetadataHolderService.class), flags);
    }

    @RequiresApi(24)
    private static class Api24Impl {
        @DoNotInline
        static int getDisabledComponentFlag() {
            return PackageManager.MATCH_DISABLED_COMPONENTS;
        }
    }
}