[Settings] Enable WiFi calling toggle in search
WiFi calling toggle in search need to pass the toggle request to
receiver to make it work.
Bug: 206871758
Test: local
Change-Id: If23d1ae1eaeb5d505e584dec94e1980f6e329c65
(cherry picked from commit a6a35b8409
)
This commit is contained in:
@@ -179,7 +179,8 @@ public class WifiCallingSliceHelper {
|
||||
.setTitle(res.getText(R.string.wifi_calling_settings_title))
|
||||
.addEndItem(
|
||||
SliceAction.createToggle(
|
||||
getBroadcastIntent(ACTION_WIFI_CALLING_CHANGED),
|
||||
getBroadcastIntent(ACTION_WIFI_CALLING_CHANGED,
|
||||
isWifiCallingEnabled),
|
||||
null /* actionTitle */, isWifiCallingEnabled))
|
||||
.setPrimaryAction(SliceAction.createDeeplink(
|
||||
getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
|
||||
@@ -316,7 +317,7 @@ public class WifiCallingSliceHelper {
|
||||
final Resources res = getResourcesForSubId(subId);
|
||||
return new RowBuilder()
|
||||
.setTitle(res.getText(preferenceTitleResId))
|
||||
.setTitleItem(SliceAction.createToggle(getBroadcastIntent(action),
|
||||
.setTitleItem(SliceAction.createToggle(getBroadcastIntent(action, checked),
|
||||
icon, res.getText(preferenceTitleResId), checked));
|
||||
}
|
||||
|
||||
@@ -370,25 +371,31 @@ public class WifiCallingSliceHelper {
|
||||
public void handleWifiCallingChanged(Intent intent) {
|
||||
final int subId = getDefaultVoiceSubId();
|
||||
|
||||
if (SubscriptionManager.isValidSubscriptionId(subId)) {
|
||||
if (SubscriptionManager.isValidSubscriptionId(subId)
|
||||
&& intent.hasExtra(EXTRA_TOGGLE_STATE)) {
|
||||
final WifiCallingQueryImsState queryState = queryImsState(subId);
|
||||
if (queryState.isWifiCallingProvisioned()) {
|
||||
final boolean currentValue = queryState.isEnabledByUser()
|
||||
&& queryState.isAllowUserControl();
|
||||
final boolean currentValue = isWifiCallingEnabled();
|
||||
final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
||||
currentValue);
|
||||
final Intent activationAppIntent =
|
||||
getWifiCallingCarrierActivityIntent(subId);
|
||||
if (!newValue || activationAppIntent == null) {
|
||||
if ((newValue == currentValue) && activationAppIntent == null) {
|
||||
// If either the action is to turn off wifi calling setting
|
||||
// or there is no activation involved - Update the setting
|
||||
if (newValue != currentValue) {
|
||||
final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
|
||||
imsMmTelManager.setVoWiFiSettingEnabled(newValue);
|
||||
}
|
||||
final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
|
||||
imsMmTelManager.setVoWiFiSettingEnabled(!newValue);
|
||||
} else {
|
||||
Log.w(TAG, "action not taken: subId " + subId
|
||||
+ " from " + currentValue + " to " + newValue);
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "action not taken: subId " + subId + " needs provision");
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "action not taken: subId " + subId);
|
||||
}
|
||||
|
||||
// notify change in slice in any case to get re-queried. This would result in displaying
|
||||
// appropriate message with the updated setting.
|
||||
mContext.getContentResolver().notifyChange(WIFI_CALLING_URI, null);
|
||||
@@ -541,10 +548,20 @@ public class WifiCallingSliceHelper {
|
||||
PendingIntent.FLAG_IMMUTABLE);
|
||||
}
|
||||
|
||||
private PendingIntent getBroadcastIntent(String action) {
|
||||
/**
|
||||
* Create PendingIntent for Slice.
|
||||
* Note: SliceAction#createDeeplink() didn't support toggle status so far,
|
||||
* therefore, embedding toggle status within PendingIntent.
|
||||
*
|
||||
* @param action Slice action
|
||||
* @param isChecked Status when Slice created.
|
||||
* @return PendingIntent
|
||||
*/
|
||||
private PendingIntent getBroadcastIntent(String action, boolean isChecked) {
|
||||
final Intent intent = new Intent(action);
|
||||
intent.setClass(mContext, SliceBroadcastReceiver.class);
|
||||
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
|
||||
intent.putExtra(EXTRA_TOGGLE_STATE, isChecked);
|
||||
return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||
}
|
||||
|
Reference in New Issue
Block a user