Получение активного соединения на Blackberry - PullRequest
0 голосов
/ 15 июля 2011

Я получаю параметры соединения для моего HTTP-вызова, используя следующий код:

Это работает на моих тестовых телефонах и эмуляторах.Однако для некоторых людей (возможно, просто 9700 пользователей, но я не могу этого гарантировать) это вызывает ошибки "Failed to transmit", даже если у них есть работающее соединение 3G / wifi.

Что я делаю не так?

  private String getConnectionParameters()
  {
    String strCP = null;        

    int coverageStatus = CoverageInfo.getCoverageStatus();

    if((coverageStatus & CoverageInfo.COVERAGE_DIRECT) == CoverageInfo.COVERAGE_DIRECT)
    {
      // Carrier coverage
      String carrierUid = getCarrierBIBSUid();
      if(carrierUid == null) 
      {
        String wap2 = getWAP2ServiceRecord();

        if (wap2 != null)
        {
          // Try using WAP2
          strCP = ";deviceside=false;connectionUID="+wap2;  
        }
        else
        {
          // Has carrier coverage, but not BIBS or WAP2.  So use the carrier's TCP network
          strCP = ";deviceside=true";
        }
      }
      else 
      {
        // otherwise, use the Uid to construct a valid carrier BIBS request
        strCP = ";deviceside=false;connectionUID="+carrierUid + ";ConnectionType=mds-public";
      }
    }
    else if((coverageStatus & CoverageInfo.COVERAGE_MDS) == CoverageInfo.COVERAGE_MDS)
    {
      // MDS coverage found
      strCP = ";deviceside=false";
    }
    else if((WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) && RadioInfo.areWAFsSupported(RadioInfo.WAF_WLAN))
    {
      // Device is connected via Wifi
      strCP = ";interface=wifi";
    }
    else if(coverageStatus == CoverageInfo.COVERAGE_NONE)
    {
      // There is no available connection
      strCP = "";
    }
    else
    {
      // no other options found, assuming device
      strCP = ";deviceside=true";
    }

    return strCP;
  }

  private String getCarrierBIBSUid()
  {
    ServiceRecord[] records = ServiceBook.getSB().getRecords();

    for(int i = 0; i < records.length; i++)
    {
      if(records[i].getCid().toLowerCase().equals("ippp"))
      {
        if(records[i].getName().toLowerCase().indexOf("bibs") >= 0)
        {
          return records[i].getUid();
        }
      }
    }

    return null;
  }

  private String getWAP2ServiceRecord()
  {
    ServiceBook sb = ServiceBook.getSB();
    ServiceRecord[] records = sb.getRecords();

    for (int i = 0; i < records.length; i++)
    {
      String cid = records[i].getCid().toLowerCase();
      String uid = records[i].getUid().toLowerCase();

      if ((cid.indexOf("wptcp") != -1) && (uid.indexOf("wifi") == -1) && (uid.indexOf("mms") == -1))
      {
        return records[i].getUid();
      }
    }

    return null;
  }

1 Ответ

0 голосов
/ 15 июля 2011

У меня была такая же проблема с моим классом соединения, прежде чем я нашел Универсальный код соединения Monkey

Моя проблема была с соединениями BIS, вам нужно выполнить цикл и попробовать каждое соединение.Не уверен, что это носитель или CDMA против GSM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...