Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3d4693f authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "UpdateAvailableNetworks apis"

parents 9814a10f a3ab858f
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -42028,6 +42028,19 @@ package android.telephony {
    field public static final int BAND_9 = 9; // 0x9
  }
  public final class AvailableNetworkInfo implements android.os.Parcelable {
    ctor public AvailableNetworkInfo(int, int, java.util.ArrayList<java.lang.String>);
    method public int describeContents();
    method public java.util.List<java.lang.String> getMccMncs();
    method public int getPriority();
    method public int getSubId();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.telephony.AvailableNetworkInfo> CREATOR;
    field public static final int PRIORITY_HIGH = 1; // 0x1
    field public static final int PRIORITY_LOW = 3; // 0x3
    field public static final int PRIORITY_MED = 2; // 0x2
  }
  public class CarrierConfigManager {
    method public android.os.PersistableBundle getConfig();
    method public android.os.PersistableBundle getConfigForSubId(int);
@@ -43006,6 +43019,7 @@ package android.telephony {
    method public boolean setVoiceMailNumber(java.lang.String, java.lang.String);
    method public deprecated void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);
    method public deprecated void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean);
    method public boolean updateAvailableNetworks(java.util.List<android.telephony.AvailableNetworkInfo>);
    field public static final java.lang.String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
    field public static final java.lang.String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
    field public static final java.lang.String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
+19 −0
Original line number Diff line number Diff line
/*
 * 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 android.telephony;

parcelable AvailableNetworkInfo;
+168 −0
Original line number Diff line number Diff line
/*
 * 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 android.telephony;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
 * Defines available network information which includes corresponding subscription id,
 * network plmns and corresponding priority to be used for network selection by Alternative Network
 * Service.
 */
public final class AvailableNetworkInfo implements Parcelable {

    /*
     * Defines number of priority level high.
     */
    public static final int PRIORITY_HIGH = 1;

    /*
     * Defines number of priority level medium.
     */
    public static final int PRIORITY_MED = 2;

    /*
     * Defines number of priority level low.
     */
    public static final int PRIORITY_LOW = 3;

    /**
     * subscription Id of the available network. This value must be one of the entry retrieved from
     * {@link SubscriptionManager#getOpportunisticSubscriptions}
     */
    private int mSubId;

    /**
     * Priority for the subscription id.
     * Priorities are in the range of 1 to 3 where 1
     * has the highest priority.
     */
    private int mPriority;

    /**
     * Describes the List of PLMN ids (MCC-MNC) associated with mSubId.
     * If this entry is left empty, then the platform software will not scan the network
     * to revalidate the input.
     */
    private ArrayList<String> mMccMncs;

    /**
     * Return subscription Id of the available network.
     * This value must be one of the entry retrieved from
     * {@link SubscriptionManager#getOpportunisticSubscriptions}
     * @return subscription id
     */
    public int getSubId() {
        return mSubId;
    }

    /**
     * Return priority for the subscription id. Valid value will be within
     * [{@link AvailableNetworkInfo#PRIORITY_HIGH}, {@link AvailableNetworkInfo#PRIORITY_LOW}]
     * @return priority level
     */
    public int getPriority() {
        return mPriority;
    }

    /**
     * Return List of PLMN ids (MCC-MNC) associated with the sub ID.
     * If this entry is left empty, then the platform software will not scan the network
     * to revalidate the input.
     * @return list of PLMN ids
     */
    public List<String> getMccMncs() {
        return (List<String>) mMccMncs.clone();
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(mSubId);
        dest.writeInt(mPriority);
        dest.writeStringList(mMccMncs);
    }

    private AvailableNetworkInfo(Parcel in) {
        mSubId = in.readInt();
        mPriority = in.readInt();
        in.readStringList(mMccMncs);
    }

    public AvailableNetworkInfo(int subId, int priority, ArrayList<String> mccMncs) {
        mSubId = subId;
        mPriority = priority;
        mMccMncs = new ArrayList<String>(mccMncs);
    }

    @Override
    public boolean equals(Object o) {
        AvailableNetworkInfo ani;

        try {
            ani = (AvailableNetworkInfo) o;
        } catch (ClassCastException ex) {
            return false;
        }

        if (o == null) {
            return false;
        }

        return (mSubId == ani.mSubId
                && mPriority == ani.mPriority
                && (((mMccMncs != null)
                && mMccMncs.equals(ani.mMccMncs))));
    }

    @Override
    public int hashCode() {
        return Objects.hash(mSubId, mPriority, mMccMncs);
    }

    public static final Parcelable.Creator<AvailableNetworkInfo> CREATOR =
            new Creator<AvailableNetworkInfo>() {
                @Override
                public AvailableNetworkInfo createFromParcel(Parcel in) {
                    return new AvailableNetworkInfo(in);
                }

                @Override
                public AvailableNetworkInfo[] newArray(int size) {
                    return new AvailableNetworkInfo[size];
                }
            };

    @Override
    public String toString() {
        return ("AvailableNetworkInfo:"
                + " mSubId: " + mSubId
                + " mPriority: " + mPriority
                + " mMccMncs: " + Arrays.toString(mMccMncs.toArray()));
    }
}
+30 −0
Original line number Diff line number Diff line
@@ -9576,4 +9576,34 @@ public class TelephonyManager {
        }
        return subId;
    }

    /**
     * Update availability of a list of networks in the current location.
     *
     * This api should be called to inform AlternativeNetwork Service about the availability
     * of a network at the current location. This information will be used by AlternativeNetwork
     * service to decide to attach to the network opportunistically. If an empty list is passed,
     * it is assumed that no network is available.
     * Requires that the calling app has carrier privileges on both primary and
     * secondary subscriptions (see {@link #hasCarrierPrivileges}), or has permission
     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.
     * @param availableNetworks is a list of available network information.
     * @return true if request is accepted
     *
     */
    @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
    public boolean updateAvailableNetworks(List<AvailableNetworkInfo> availableNetworks) {
        String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
        boolean ret = false;
        try {
            IAns iAlternativeNetworkService = getIAns();
            if (iAlternativeNetworkService != null) {
                ret = iAlternativeNetworkService.updateAvailableNetworks(availableNetworks,
                        pkgForDebug);
            }
        } catch (RemoteException ex) {
            Rlog.e(TAG, "updateAvailableNetworks RemoteException", ex);
        }
        return ret;
    }
}
+20 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.internal.telephony;

import android.telephony.AvailableNetworkInfo;

interface IAns {

@@ -78,4 +79,23 @@ interface IAns {
     *
     */
    int getPreferredData(String callingPackage);

    /**
     * Update availability of a list of networks in the current location.
     *
     * This api should be called if the caller is aware of the availability of a network
     * at the current location. This information will be used by AlternativeNetwork service
     * to decide to attach to the network. If an empty list is passed,
     * it is assumed that no network is available.
     * Requires that the calling app has carrier privileges on both primary and
     * secondary subscriptions (see
     * {@link #hasCarrierPrivileges}), or has permission
     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.
     *  @param availableNetworks is a list of available network information.
     *  @param callingPackage caller's package name
     *  @return true if request is accepted
     *
     */
    boolean updateAvailableNetworks(in List<AvailableNetworkInfo> availableNetworks,
            String callingPackage);
}