<!-- Phone IMS registration required off. Only shown in diagnostic screen, so precise translation is not needed. -->
<string name="ims_reg_required_off">Turn off IMS registration required</string>
+ <!-- VoLTE provisioning flag on. Only shown in diagnostic screen, so precise translation is not needed. -->
+ <string name="volte_provisioned_flag_on">Turn on VoLTE provisioned flag</string>
+ <!-- VoLTE provisioning flag off. Only shown in diagnostic screen, so precise translation is not needed. -->
+ <string name="volte_provisioned_flag_off">Turn off VoLTE provisioned flag</string>
+
<!-- Phone ram dump on. Only shown in diagnostic screen, so precise translation is not needed. -->
<string name="lte_ram_dump_on">Turn on lte ram dump</string>
<!-- Phone ram dump off. Only shown in diagnostic screen, so precise translation is not needed. -->
package com.android.settings;
import android.app.Activity;
+import android.app.QueuedWork;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.PhoneStateIntentReceiver;
import com.android.internal.telephony.TelephonyProperties;
+import com.android.ims.ImsConfig;
+import com.android.ims.ImsException;
+import com.android.ims.ImsManager;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
case EVENT_SERVICE_STATE_CHANGED:
updateServiceState();
updatePowerState();
+ updateImsVoLteProvisionedState();
break;
case EVENT_QUERY_PREFERRED_TYPE_DONE:
imsRegRequiredButton = (Button) findViewById(R.id.ims_reg_required);
imsRegRequiredButton.setOnClickListener(mImsRegRequiredHandler);
+ imsVoLteProvisionedButton = (Button) findViewById(R.id.volte_provisioned_flag);
+ imsVoLteProvisionedButton.setOnClickListener(mImsVoLteProvisionedHandler);
+
smsOverImsButton = (Button) findViewById(R.id.sms_over_ims);
smsOverImsButton.setOnClickListener(mSmsOverImsHandler);
updatePowerState();
updateCellInfoListRate();
updateImsRegRequiredState();
+ updateImsVoLteProvisionedState();
updateSmsOverImsState();
updateLteRamDumpState();
updateProperties();
return SystemProperties.getBoolean(PROPERTY_SMS_OVER_IMS, false);
}
+ private Button imsVoLteProvisionedButton;
+ OnClickListener mImsVoLteProvisionedHandler = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ log(String.format("toggle VoLTE provisioned: currently %s",
+ (isImsVoLteProvisioned() ? "on":"off")));
+ final boolean newValue = !isImsVoLteProvisioned();
+ if (phone != null) {
+ final ImsManager imsManager = ImsManager.getInstance(phone.getContext(), phone.getSubId());
+ if (imsManager != null) {
+ QueuedWork.singleThreadExecutor().submit(new Runnable() {
+ public void run() {
+ try {
+ imsManager.getConfigInterface().setProvisionedValue(
+ ImsConfig.ConfigConstants.VLT_SETTING_ENABLED,
+ newValue? 1 : 0);
+ } catch (ImsException e) {
+ Log.e(TAG, "setImsVoLteProvisioned() exception:", e);
+ }
+ }
+ });
+ }
+ }
+ updateImsVoLteProvisionedState();
+ }
+ };
+
+ private boolean isImsVoLteProvisioned() {
+ if (phone != null) {
+ ImsManager imsManager = ImsManager.getInstance(phone.getContext(), phone.getSubId());
+ return imsManager.isVolteProvisionedOnDevice(phone.getContext());
+ }
+ return false;
+ }
+
+ private void updateImsVoLteProvisionedState() {
+ log("updateImsVoLteProvisionedState isImsVoLteProvisioned()=" + isImsVoLteProvisioned());
+ String buttonText = isImsVoLteProvisioned() ?
+ getString(R.string.volte_provisioned_flag_off) :
+ getString(R.string.volte_provisioned_flag_on);
+ imsVoLteProvisionedButton.setText(buttonText);
+ }
+
private void updateSmsOverImsState() {
log("updateSmsOverImsState isSmsOverImsEnabled()=" + isSmsOverImsEnabled());
String buttonText = isSmsOverImsEnabled() ?