public final class

MbmsHelper

extends java.lang.Object

 java.lang.Object

↳androidx.core.telephony.mbms.MbmsHelper

Gradle dependencies

compile group: 'androidx.core', name: 'core', version: '1.9.0-alpha04'

  • groupId: androidx.core
  • artifactId: core
  • version: 1.9.0-alpha04

Artifact androidx.core:core:1.9.0-alpha04 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.core:core com.android.support:support-compat

Overview

Helper methods for working with the android.telephony.mbms cell-broadcast APIs.

Summary

Methods
public static java.lang.CharSequencegetBestNameForService(Context context, ServiceInfo serviceInfo)

Finds the best name for an eMBMS streaming or file-download service, given a that specifies the user's preferred languages.

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

Methods

public static java.lang.CharSequence getBestNameForService(Context context, ServiceInfo serviceInfo)

Finds the best name for an eMBMS streaming or file-download service, given a that specifies the user's preferred languages. If no language supported by the is preferred by the user, this method will return null. If called while running on an SDK version prior to , this method will return null.

Parameters:

context: An instance of from your user-facing app
serviceInfo: An instance of or provided by the middleware.

Returns:

The best name to display to the user for the service, or null if nothing matches.

Source

/*
 * Copyright (C) 2018 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.core.telephony.mbms;

import android.content.Context;
import android.os.Build;
import android.os.LocaleList;
import android.telephony.mbms.ServiceInfo;

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

import java.util.Locale;
import java.util.Set;

/**
 * Helper methods for working with the {@link android.telephony.mbms} cell-broadcast APIs.
 */
public final class MbmsHelper {
    private MbmsHelper() {
        // This class is not instantiable.
    }

    /**
     * Finds the best name for an eMBMS streaming or file-download service, given a
     * {@link Context} that specifies the user's preferred languages. If no language supported by
     * the {@link ServiceInfo} is preferred by the user, this method will return {@code null}.
     * If called while running on an SDK version prior to {@link Build.VERSION_CODES#P}, this method
     * will return {@code null}.
     *
     * @param context An instance of {@link Context} from your user-facing app
     * @param serviceInfo An instance of {@link android.telephony.mbms.StreamingServiceInfo} or
     * {@link android.telephony.mbms.FileServiceInfo} provided by the middleware.
     * @return The best name to display to the user for the service, or {@code null} if nothing
     * matches.
     */
    @Nullable
    public static CharSequence getBestNameForService(@NonNull Context context,
            @NonNull ServiceInfo serviceInfo) {
        if (Build.VERSION.SDK_INT >= 28) {
            return Api28Impl.getBestNameForService(context, serviceInfo);
        }
        return null;
    }

    @RequiresApi(28)
    static class Api28Impl {
        private Api28Impl() {
            // This class is not instantiable.
        }

        static CharSequence getBestNameForService(Context context, ServiceInfo serviceInfo) {
            Set<Locale> namedContentLocales = serviceInfo.getNamedContentLocales();
            if (namedContentLocales.isEmpty()) {
                return null;
            }

            String[] supportedLanguages = new String[namedContentLocales.size()];
            int i = 0;
            for (Locale l : serviceInfo.getNamedContentLocales()) {
                supportedLanguages[i] = l.toLanguageTag();
                i++;
            }

            LocaleList localeList = context.getResources().getConfiguration().getLocales();
            Locale bestLocale = localeList.getFirstMatch(supportedLanguages);
            return bestLocale == null ? null : serviceInfo.getNameForLocale(bestLocale);
        }
    }
}