diff options
author | Sooraj Sasindran <sasindran@google.com> | 2018-10-11 22:58:32 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-10-11 22:58:32 +0000 |
commit | 98966bcbb645204ad397dc9267b3053bf450fcbb (patch) | |
tree | 3fd29106fb30afb0dad39dda3fa6b8944199d4e7 | |
parent | e9f1e8c12389b79aa9d829caf8ac0e753888adaa (diff) | |
parent | 32e446bf00bfab0df3a482bfc8dcaac680f590d9 (diff) | |
download | base-98966bcbb645204ad397dc9267b3053bf450fcbb.tar.gz |
Merge "Introduce AlternativeNetwork APIs"
-rw-r--r-- | Android.bp | 1 | ||||
-rwxr-xr-x | api/current.txt | 1 | ||||
-rw-r--r-- | telephony/java/android/telephony/SubscriptionManager.java | 11 | ||||
-rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 64 | ||||
-rwxr-xr-x | telephony/java/com/android/internal/telephony/IAns.aidl | 52 |
5 files changed, 123 insertions, 6 deletions
diff --git a/Android.bp b/Android.bp index f0eba8b41002..ad3c14cdd5ac 100644 --- a/Android.bp +++ b/Android.bp @@ -550,6 +550,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/IAns.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", diff --git a/api/current.txt b/api/current.txt index bafd4711cca3..aca5e5194290 100755 --- a/api/current.txt +++ b/api/current.txt @@ -42637,6 +42637,7 @@ package android.telephony { method public static int getDefaultSubscriptionId(); method public static int getDefaultVoiceSubscriptionId(); method public static int[] getSubscriptionIds(int); + method public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions(int); method public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int); method public boolean isActiveSubscriptionId(int); method public boolean isNetworkRoaming(int); diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index f9c9b61979e8..5f295582b4e8 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -2226,20 +2226,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 diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 2d156b08c6d3..e4204482aa3d 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -67,6 +67,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.IAns; import com.android.internal.telephony.IPhoneSubInfo; import com.android.internal.telephony.ITelephony; import com.android.internal.telephony.ITelephonyRegistry; @@ -4420,6 +4421,10 @@ public class TelephonyManager { return ITelephonyRegistry.Stub.asInterface(ServiceManager.getService("telephony.registry")); } + private IAns getIAns() { + return IAns.Stub.asInterface(ServiceManager.getService("ians")); + } + // // // PhoneStateListener @@ -8611,7 +8616,6 @@ public class TelephonyManager { return UNKNOWN_CARRIER_ID_LIST_VERSION; } - /** * How many modems can have simultaneous data connections. * @hide @@ -8629,4 +8633,62 @@ public class TelephonyManager { } return 0; } + + /** + * Enable or disable AlternativeNetworkService. + * + * This method should be called to enable or disable + * AlternativeNetwork 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 setAlternativeNetworkState(boolean enable) { + String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>"; + boolean ret = false; + try { + IAns iAlternativeNetworkService = getIAns(); + if (iAlternativeNetworkService != null) { + ret = iAlternativeNetworkService.setEnable(enable, pkgForDebug); + } + } catch (RemoteException ex) { + Rlog.e(TAG, "enableAlternativeNetwork RemoteException", ex); + } + + return ret; + } + + /** + * is AlternativeNetworkService enabled + * + * This method should be called to determine if the AlternativeNetworkService 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 isAlternativeNetworkEnabled() { + String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>"; + boolean isEnabled = false; + + try { + IAns iAlternativeNetworkService = getIAns(); + if (iAlternativeNetworkService != null) { + isEnabled = iAlternativeNetworkService.isEnabled(pkgForDebug); + } + } catch (RemoteException ex) { + Rlog.e(TAG, "enableAlternativeNetwork RemoteException", ex); + } + + return isEnabled; + } } diff --git a/telephony/java/com/android/internal/telephony/IAns.aidl b/telephony/java/com/android/internal/telephony/IAns.aidl new file mode 100755 index 000000000000..6eb8d666cb1e --- /dev/null +++ b/telephony/java/com/android/internal/telephony/IAns.aidl @@ -0,0 +1,52 @@ +/* + * 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 IAns { + + /** + * Enable or disable Alternative Network service. + * + * This method should be called to enable or disable + * AlternativeNetwork 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 service enabled + * + * This method should be called to determine if the Alternative 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); +} |