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

Commit d71ccc54 authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Android (Google) Code Review
Browse files

Merge "Introduce AlternativeNetworkAccess APIs"

parents 8dcc5f99 165c9e90
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -554,6 +554,7 @@ java_defaults {
        "telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl",
        "telephony/java/com/android/internal/telephony/ISms.aidl",
        "telephony/java/com/android/internal/telephony/ISub.aidl",
        "telephony/java/com/android/internal/telephony/IAnas.aidl",
        "telephony/java/com/android/internal/telephony/ITelephony.aidl",
        "telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl",
        "telephony/java/com/android/internal/telephony/IWapPushManager.aidl",
+1 −0
Original line number Diff line number Diff line
@@ -42623,6 +42623,7 @@ package android.telephony {
    method public static int getDefaultSmsSubscriptionId();
    method public static int getDefaultSubscriptionId();
    method public static int getDefaultVoiceSubscriptionId();
    method public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions(int);
    method public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
    method public boolean isNetworkRoaming(int);
    method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
+6 −5
Original line number Diff line number Diff line
@@ -2007,20 +2007,21 @@ public class SubscriptionManager {
    }

    /**
     * Get User downloaded Profiles.
     * Get opportunistic data Profiles.
     *
     *  Provide all available user downloaded profile on the phone.
     *  @param slotId on which phone the switch will operate on
     *  Provide all available user downloaded profiles on phone which are used only for
     *  opportunistic data.
     *  @param slotIndex slot on which the profiles are queried from.
     */
    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
    List<SubscriptionInfo> getOpportunisticSubscriptions(int slotId) {
    public List<SubscriptionInfo> getOpportunisticSubscriptions(int slotIndex) {
        String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
        List<SubscriptionInfo> subInfoList = null;

        try {
            ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
            if (iSub != null) {
                subInfoList = iSub.getOpportunisticSubscriptions(slotId, pkgForDebug);
                subInfoList = iSub.getOpportunisticSubscriptions(slotIndex, pkgForDebug);
            }
        } catch (RemoteException ex) {
            // ignore it
+63 −1
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ import com.android.ims.internal.IImsServiceFeatureCallback;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telecom.ITelecomService;
import com.android.internal.telephony.CellNetworkScanResult;
import com.android.internal.telephony.IAnas;
import com.android.internal.telephony.IPhoneSubInfo;
import com.android.internal.telephony.ITelephony;
import com.android.internal.telephony.ITelephonyRegistry;
@@ -4327,6 +4328,10 @@ public class TelephonyManager {
        return ITelephonyRegistry.Stub.asInterface(ServiceManager.getService("telephony.registry"));
    }

    private IAnas getIAnas() {
        return IAnas.Stub.asInterface(ServiceManager.getService("ianas"));
    }

    //
    //
    // PhoneStateListener
@@ -8193,7 +8198,6 @@ public class TelephonyManager {
        return UNKNOWN_CARRIER_ID_LIST_VERSION;
    }


    /**
     * How many modems can have simultaneous data connections.
     * @hide
@@ -8211,4 +8215,62 @@ public class TelephonyManager {
        }
        return 0;
    }

    /**
     * Enable or disable AlternativeNetworkAccessService.
     *
     * This method should be called to enable or disable
     * AlternativeNetworkAccess service on the device.
     *
     * <p>
     * Requires Permission:
     *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
     *
     * @param enable enable(True) or disable(False)
     * @return returns true if successfully set.
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public boolean setAlternativeNetworkAccessState(boolean enable) {
        String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
        boolean ret = false;
        try {
            IAnas iAlternativeAccessService = getIAnas();
            if (iAlternativeAccessService != null) {
                ret = iAlternativeAccessService.setEnable(enable, pkgForDebug);
            }
        } catch (RemoteException ex) {
            Rlog.e(TAG, "enableAlternativeNetworkAccess RemoteException", ex);
        }

        return ret;
    }

    /**
     * is AlternativeNetworkAccessService enabled
     *
     * This method should be called to determine if the AlternativeNetworkAccessService is
     * enabled
     *
     * <p>
     * Requires Permission:
     *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
    public boolean isAlternativeNetworkAccessEnabled() {
        String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
        boolean isEnabled = false;

        try {
            IAnas iAlternativeAccessService = getIAnas();
            if (iAlternativeAccessService != null) {
                isEnabled = iAlternativeAccessService.isEnabled(pkgForDebug);
            }
        } catch (RemoteException ex) {
            Rlog.e(TAG, "enableAlternativeNetworkAccess RemoteException", ex);
        }

        return isEnabled;
    }
}
+52 −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 com.android.internal.telephony;


interface IAnas {

    /**
    * Enable or disable Alternative Network Access service.
    *
    * This method should be called to enable or disable
    * AlternativeNetworkAccess service on the device.
    *
    * <p>
    * Requires Permission:
    *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
    * Or the calling app has carrier privileges. @see #hasCarrierPrivileges
    *
    * @param enable enable(True) or disable(False)
    * @param callingPackage caller's package name
    * @return returns true if successfully set.
    */
    boolean setEnable(boolean enable, String callingPackage);

    /**
     * is Alternative Network Access service enabled
     *
     * This method should be called to determine if the Alternative Network Access service is enabled
    *
    * <p>
    * Requires Permission:
    *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
    * Or the calling app has carrier privileges. @see #hasCarrierPrivileges
    *
    * @param callingPackage caller's package name
    */
    boolean isEnabled(String callingPackage);
}