0

次のコードを使用して、デバイスが使用しているネットワークを確立しています。

TelephonyManager tempManager;
tempManager= (TelephonyManager)myContext.getSystemService(Context.TELEPHONY_SERVICE);
int result = 0;
    if(tempManager != null && tempManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS) //do we have a UMTS connection ?
  {
   result = 2;
  }
  else if(tempManager != null && tempManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_GPRS) //or is it just a shabby 2g connection ?
  {
   result = 1;
  }
  else if(tempManager != null && tempManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_UNKNOWN) //or is it just a shabby 2g connection ?
  {
   result = 4;
  }
return result;

HSDPA接続に接続しない限り、かなりうまく機能します。その場合、結果として常に0が返されます。私の場合、ソフトウェアは接続がまったくないと考えます:(

何が起こっているのかを知っていて、これに関する経験があり、最も重要なことに、この問題の解決策を持っている人は誰でも???

前もって感謝します

4

2 に答える 2

2

HSDPAにも列挙型があります

接続があるかどうかを確認し、タイプも取得するには、むしろgetActiveNetworkInfoisConnectedを使用します。接続がない場合は null を返します。getTypeおよびgetSubtypeNameメソッドで接続のタイプを確認することも、アプローチと組み合わせることができます。

于 2010-12-02T08:17:21.197 に答える
0

これは私が使用しているコードです。接続を安全にチェックし、接続タイプを返します。私のアプリケーションでは、Wifi、モバイル、または接続されていないことのみを気にするため、この関数はそれを返します。自分の状況に合わせて変更してください。

//Check weather Internet connection is available or not
public int checkConnectionType()
{
    final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetInfo = conMgr.getActiveNetworkInfo();
    if (activeNetInfo != null && activeNetInfo.isAvailable() && activeNetInfo.isConnected())
    {
        int type = activeNetInfo.getType();
        if (type == ConnectivityManager.TYPE_MOBILE || type == ConnectivityManager.TYPE_MOBILE_DUN
                || type == ConnectivityManager.TYPE_MOBILE_HIPRI || type == ConnectivityManager.TYPE_MOBILE_MMS
                || type == ConnectivityManager.TYPE_MOBILE_SUPL || type == ConnectivityManager.TYPE_WIMAX)
        {
            return ConnectivityManager.TYPE_MOBILE;
        }
        else if (type == ConnectivityManager.TYPE_WIFI)
        {
            return ConnectivityManager.TYPE_WIFI;
        }
        else
        {
            // Unknown connection type, so to be safe say mobile
            return ConnectivityManager.TYPE_MOBILE;
        }
    }
    else
    {
        // return not connected
        return -1;
    }
}

アプリのマニフェストでこの権限が必要になります

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2012-11-21T19:23:03.380 に答える