public String getVvmType() {
    if (mCarrierConfig == null) {
      return null;
    }

    return mCarrierConfig.getString(CarrierConfigManager.KEY_VVM_TYPE_STRING, null);
  }
  public String getCarrierVvmPackageName() {
    if (mCarrierConfig == null) {
      return null;
    }

    return mCarrierConfig.getString(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING, null);
  }
 /**
  * For checking upon sim insertion whether visual voicemail should be enabled. This method does so
  * by checking if the carrier's voicemail app is installed.
  */
 public boolean isEnabledByDefault() {
   String packageName =
       mCarrierConfig.getString(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING);
   if (packageName == null) {
     return true;
   }
   try {
     mContext.getPackageManager().getPackageInfo(packageName, 0);
     return false;
   } catch (NameNotFoundException e) {
     return true;
   }
 }
  private OmtpMessageSender getMessageSender() {
    if (mCarrierConfig == null) {
      Log.w(TAG, "Empty carrier config.");
      return null;
    }

    int applicationPort = mCarrierConfig.getInt(CarrierConfigManager.KEY_VVM_PORT_NUMBER_INT, 0);
    String destinationNumber =
        mCarrierConfig.getString(CarrierConfigManager.KEY_VVM_DESTINATION_NUMBER_STRING);
    if (TextUtils.isEmpty(destinationNumber)) {
      Log.w(TAG, "No destination number for this carrier.");
      return null;
    }

    OmtpMessageSender messageSender = null;
    SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(mSubId);
    switch (mVvmType) {
      case TelephonyManager.VVM_TYPE_OMTP:
        messageSender =
            new OmtpStandardMessageSender(
                smsManager,
                (short) applicationPort,
                destinationNumber,
                null,
                OmtpConstants.PROTOCOL_VERSION1_1,
                null);
        break;
      case TelephonyManager.VVM_TYPE_CVVM:
        messageSender =
            new OmtpCvvmMessageSender(smsManager, (short) applicationPort, destinationNumber);
        break;
      default:
        Log.w(TAG, "Unexpected visual voicemail type: " + mVvmType);
    }

    return messageSender;
  }