/*
|
* 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;
|
|
import android.telephony.AvailableNetworkInfo;
|
|
import com.android.internal.telephony.ISetOpportunisticDataCallback;
|
import com.android.internal.telephony.IUpdateAvailableNetworksCallback;
|
|
interface IOns {
|
|
/**
|
* Enable or disable Opportunistic Network service.
|
*
|
* This method should be called to enable or disable
|
* OpportunisticNetwork 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 Opportunistic Network service enabled
|
*
|
* This method should be called to determine if the Opportunistic Network 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);
|
|
/**
|
* Set preferred opportunistic data subscription id.
|
*
|
* <p>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 subId which opportunistic subscription
|
* {@link SubscriptionManager#getOpportunisticSubscriptions} is preferred for cellular data.
|
* Pass {@link SubscriptionManager#DEFAULT_SUBSCRIPTION_ID} to unset the preference
|
* @param needValidation whether validation is needed before switch happens.
|
* @param callback callback upon request completion.
|
* @param callingPackage caller's package name
|
*
|
*/
|
void setPreferredDataSubscriptionId(int subId, boolean needValidation,
|
ISetOpportunisticDataCallback callbackStub, String callingPackage);
|
|
/**
|
* Get preferred opportunistic data subscription Id
|
*
|
* <p>Requires that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}),
|
* or has permission {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}.
|
* @return subId preferred opportunistic subscription id or
|
* {@link SubscriptionManager#DEFAULT_SUBSCRIPTION_ID} if there are no preferred
|
* subscription id
|
*
|
*/
|
int getPreferredDataSubscriptionId(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 OpportunisticNetwork 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
|
* @param callback callback upon request completion.
|
*
|
*/
|
void updateAvailableNetworks(in List<AvailableNetworkInfo> availableNetworks,
|
IUpdateAvailableNetworksCallback callbackStub, String callingPackage);
|
}
|