Merge "Adding callback for setPreferredDataSubscriptionId."
This commit is contained in:
@@ -551,6 +551,7 @@ java_defaults {
|
||||
"telephony/java/com/android/internal/telephony/IOnSubscriptionsChangedListener.aidl",
|
||||
"telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl",
|
||||
"telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl",
|
||||
"telephony/java/com/android/internal/telephony/ISetOpportunisticDataCallback.aidl",
|
||||
"telephony/java/com/android/internal/telephony/ISms.aidl",
|
||||
"telephony/java/com/android/internal/telephony/ISub.aidl",
|
||||
"telephony/java/com/android/internal/telephony/IOns.aidl",
|
||||
|
||||
@@ -43196,6 +43196,9 @@ package android.telephony {
|
||||
field public static final int PHONE_TYPE_GSM = 1; // 0x1
|
||||
field public static final int PHONE_TYPE_NONE = 0; // 0x0
|
||||
field public static final int PHONE_TYPE_SIP = 3; // 0x3
|
||||
field public static final int SET_OPPORTUNISTIC_SUB_INVALID_PARAMETER = 2; // 0x2
|
||||
field public static final int SET_OPPORTUNISTIC_SUB_SUCCESS = 0; // 0x0
|
||||
field public static final int SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED = 1; // 0x1
|
||||
field public static final int SIM_STATE_ABSENT = 1; // 0x1
|
||||
field public static final int SIM_STATE_CARD_IO_ERROR = 8; // 0x8
|
||||
field public static final int SIM_STATE_CARD_RESTRICTED = 9; // 0x9
|
||||
|
||||
@@ -6306,6 +6306,7 @@ package android.telephony {
|
||||
method public void requestEmbeddedSubscriptionInfoListRefresh(int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @NonNull java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean);
|
||||
field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
|
||||
field public static final int PROFILE_CLASS_DEFAULT = -1; // 0xffffffff
|
||||
|
||||
@@ -59,6 +59,7 @@ import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.telephony.IOnSubscriptionsChangedListener;
|
||||
import com.android.internal.telephony.ISetOpportunisticDataCallback;
|
||||
import com.android.internal.telephony.ISub;
|
||||
import com.android.internal.telephony.ITelephonyRegistry;
|
||||
import com.android.internal.telephony.PhoneConstants;
|
||||
@@ -72,6 +73,7 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -2583,17 +2585,35 @@ public class SubscriptionManager {
|
||||
* {@link SubscriptionManager#DEFAULT_SUBSCRIPTION_ID}, it means
|
||||
* it's unset and {@link SubscriptionManager#getDefaultDataSubscriptionId()}
|
||||
* is used to determine which modem is preferred.
|
||||
* @param needValidation whether validation is needed before switch happens.
|
||||
* @param executor The executor of where the callback will execute.
|
||||
* @param callback Callback will be triggered once it succeeds or failed.
|
||||
* See {@link TelephonyManager.SetOpportunisticSubscriptionResult}
|
||||
* for more details. Pass null if don't care about the result.
|
||||
*
|
||||
* @hide
|
||||
*
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
|
||||
public void setPreferredDataSubscriptionId(int subId) {
|
||||
public void setPreferredDataSubscriptionId(int subId, boolean needValidation,
|
||||
@NonNull @CallbackExecutor Executor executor, Consumer<Integer> callback) {
|
||||
if (VDBG) logd("[setPreferredDataSubscriptionId]+ subId:" + subId);
|
||||
try {
|
||||
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
|
||||
if (iSub != null) {
|
||||
iSub.setPreferredDataSubscriptionId(subId);
|
||||
}
|
||||
if (iSub == null) return;
|
||||
|
||||
ISetOpportunisticDataCallback callbackStub = new ISetOpportunisticDataCallback.Stub() {
|
||||
@Override
|
||||
public void onComplete(int result) {
|
||||
Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
|
||||
if (callback != null) {
|
||||
callback.accept(result);
|
||||
}
|
||||
}));
|
||||
}
|
||||
};
|
||||
iSub.setPreferredDataSubscriptionId(subId, needValidation, callbackStub);
|
||||
} catch (RemoteException ex) {
|
||||
// ignore it
|
||||
}
|
||||
|
||||
@@ -10109,6 +10109,29 @@ public class TelephonyManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef(prefix = {"SET_OPPORTUNISTIC_SUB"}, value = {
|
||||
SET_OPPORTUNISTIC_SUB_SUCCESS,
|
||||
SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED,
|
||||
SET_OPPORTUNISTIC_SUB_INVALID_PARAMETER})
|
||||
public @interface SetOpportunisticSubscriptionResult {}
|
||||
|
||||
/**
|
||||
* No error. Operation succeeded.
|
||||
*/
|
||||
public static final int SET_OPPORTUNISTIC_SUB_SUCCESS = 0;
|
||||
|
||||
/**
|
||||
* Validation failed when trying to switch to preferred subscription.
|
||||
*/
|
||||
public static final int SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED = 1;
|
||||
|
||||
/**
|
||||
* The parameter passed in is invalid.
|
||||
*/
|
||||
public static final int SET_OPPORTUNISTIC_SUB_INVALID_PARAMETER = 2;
|
||||
|
||||
/**
|
||||
* Set preferred opportunistic data subscription id.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright 2019 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;
|
||||
|
||||
/**
|
||||
* Callback to provide asynchronous result of setPreferredOpportunisticData.
|
||||
* @hide
|
||||
*/
|
||||
oneway interface ISetOpportunisticDataCallback {
|
||||
void onComplete(int result);
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.internal.telephony;
|
||||
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import com.android.internal.telephony.ISetOpportunisticDataCallback;
|
||||
|
||||
interface ISub {
|
||||
/**
|
||||
@@ -217,10 +218,14 @@ interface ISub {
|
||||
* designed to overwrite default data subscription temporarily.
|
||||
*
|
||||
* @param subId which subscription is preferred to for cellular data.
|
||||
* @param needValidation whether validation is needed before switching.
|
||||
* @param callback callback upon request completion.
|
||||
*
|
||||
* @hide
|
||||
*
|
||||
*/
|
||||
void setPreferredDataSubscriptionId(int subId);
|
||||
void setPreferredDataSubscriptionId(int subId, boolean needValidation,
|
||||
ISetOpportunisticDataCallback callback);
|
||||
|
||||
/**
|
||||
* Get which subscription is preferred for cellular data.
|
||||
|
||||
Reference in New Issue
Block a user