protected String[] getActiveApnTypes() {
   String[] result;
   if (mActiveDp != null) {
     result = mActiveDp.getServiceTypes();
   } else {
     result = new String[1];
     result[0] = Phone.APN_TYPE_DEFAULT;
   }
   return result;
 }
 public boolean isApnTypeActive(String type) {
   return mActiveDp != null && mActiveDp.canHandleType(type);
 }
  public DataProfile getDataProfile(String serviceType) {
    DataProfile profile = null;

    // first try to get preferred APN

    String operator = getOperatorNumeric();
    String selection = "numeric = '" + operator + "'";
    // query only enabled nai.
    // carrier_enabled : 1 means enabled nai, 0 disabled nai.
    selection += " and carrier_enabled = 1";
    Cursor cursor =
        mPhone
            .getContext()
            .getContentResolver()
            .query(PREFER_DEFAULT_APN_URI, null, selection, null, null);

    log(
        "getDataProfile operator:"
            + operator
            + " select:"
            + selection
            + " count:"
            + cursor.getCount());
    if (cursor != null && cursor.getCount() > 0) {
      if (cursor.moveToFirst()) {
        do {
          String[] types =
              parseTypes(cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.TYPE)));
          DataProfile nai =
              new DataProfileCdma(
                  cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID)),
                  cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.NUMERIC)),
                  cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.APN)),
                  cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.USER)),
                  cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PASSWORD)),
                  cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.AUTH_TYPE)),
                  types,
                  cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PROTOCOL)),
                  cursor.getString(
                      cursor.getColumnIndexOrThrow(Telephony.Carriers.ROAMING_PROTOCOL)),
                  cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.BEARER)));
          if (nai.canHandleType(serviceType)) {
            cursor.close();
            return nai;
          }
        } while (cursor.moveToNext());
      }
    }

    if (cursor != null) cursor.close();

    // Go through all the profiles to find one
    for (DataProfile dp : mDataProfilesList) {
      if (dp.canHandleType(serviceType)) {
        profile = dp;
        if (mIsOmhEnabled
            && dp.getDataProfileType() != DataProfile.DataProfileType.PROFILE_TYPE_OMH) {
          // OMH enabled - Keep looking for OMH profile
          continue;
        }
        break;
      }
    }
    return profile;
  }