Merge "Implement setVisualVoicemailEnabled()" into nyc-mr1-dev
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 9b7132b..45bea8a 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -61,7 +61,6 @@
import android.util.Log;
import android.util.Pair;
import android.util.Slog;
-
import com.android.ims.ImsManager;
import com.android.internal.telephony.CallManager;
import com.android.internal.telephony.CellNetworkScanResult;
@@ -83,8 +82,8 @@
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.util.HexDump;
+import com.android.phone.settings.VisualVoicemailSettingsUtil;
import com.android.phone.settings.VoicemailNotificationSettingsUtil;
-
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -1900,6 +1899,27 @@
}
@Override
+ public void setVisualVoicemailEnabled(String callingPackage,
+ PhoneAccountHandle phoneAccountHandle, boolean enabled) {
+ mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+ if (!TextUtils.equals(callingPackage,
+ TelecomManager.from(mPhone.getContext()).getDefaultDialerPackage())) {
+ enforceModifyPermissionOrCarrierPrivilege(
+ PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccountHandle));
+ }
+ VisualVoicemailSettingsUtil.setEnabled(mPhone.getContext(), phoneAccountHandle, enabled);
+ }
+
+ @Override
+ public boolean isVisualVoicemailEnabled(String callingPackage,
+ PhoneAccountHandle phoneAccountHandle) {
+ if (!canReadPhoneState(callingPackage, "isVisualVoicemailEnabled")) {
+ return false;
+ }
+ return VisualVoicemailSettingsUtil.isEnabled(mPhone.getContext(), phoneAccountHandle);
+ }
+
+ @Override
public void enableVisualVoicemailSmsFilter(String callingPackage, int subId,
VisualVoicemailSmsFilterSettings settings) {
mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
diff --git a/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java b/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
index c38b595..b556aa1 100644
--- a/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
+++ b/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
@@ -17,12 +17,12 @@
import android.content.Context;
import android.telecom.PhoneAccountHandle;
-
import com.android.internal.telephony.Phone;
import com.android.phone.PhoneUtils;
import com.android.phone.R;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
import com.android.phone.vvm.omtp.VisualVoicemailPreferences;
+import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
/**
@@ -38,6 +38,14 @@
new VisualVoicemailPreferences(context, phoneAccount).edit()
.putBoolean(IS_ENABLED_KEY, isEnabled)
.apply();
+ OmtpVvmCarrierConfigHelper config = new OmtpVvmCarrierConfigHelper(context, phoneAccount);
+ if (isEnabled) {
+ OmtpVvmSourceManager.getInstance(context).addPhoneStateListener(phoneAccount);
+ config.startActivation();
+ } else {
+ OmtpVvmSourceManager.getInstance(context).removeSource(phoneAccount);
+ config.startDeactivation();
+ }
}
public static boolean isEnabled(Context context,
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index af4f2ad..92e1b5f 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -37,7 +37,6 @@
import android.util.Log;
import android.view.MenuItem;
import android.widget.ListAdapter;
-
import com.android.internal.telephony.CallForwardInfo;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
@@ -47,8 +46,6 @@
import com.android.phone.R;
import com.android.phone.SubscriptionInfoHelper;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
-
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -414,12 +411,8 @@
.setEnabled(mPhone.getContext(), handle, isEnabled);
PreferenceScreen prefSet = getPreferenceScreen();
if (isEnabled) {
- OmtpVvmSourceManager.getInstance(mPhone.getContext()).addPhoneStateListener(mPhone);
- mOmtpVvmCarrierConfigHelper.startActivation();
prefSet.addPreference(mVoicemailChangePinPreference);
} else {
- OmtpVvmSourceManager.getInstance(mPhone.getContext()).removeSource(mPhone);
- mOmtpVvmCarrierConfigHelper.startDeactivation();
prefSet.removePreference(mVoicemailChangePinPreference);
}
}
diff --git a/src/com/android/phone/vvm/omtp/ActivationTask.java b/src/com/android/phone/vvm/omtp/ActivationTask.java
index 89cb149..9c58b95 100644
--- a/src/com/android/phone/vvm/omtp/ActivationTask.java
+++ b/src/com/android/phone/vvm/omtp/ActivationTask.java
@@ -154,7 +154,8 @@
// The account has been activated on this device before. Pretend it is already
// activated. If there are any activation error it will overwrite this status.
VoicemailStatus.edit(getContext(), phoneAccountHandle)
- .setConfigurationState(Status.CONFIGURATION_STATE_OK);
+ .setConfigurationState(Status.CONFIGURATION_STATE_OK)
+ .apply();
}
}