سؤال

أنا جديد على تطوير Android وأعمل على تطبيق Android يتطلب توصيل الهاتف بالإنترنت ، من خلال WiFi أو Edge أو 3G.

هذا هو الرمز الذي أستخدمه للتحقق مما إذا كان الاتصال بالإنترنت متاحًا

public static boolean isConnected()
{
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

لقد قمت أيضًا بتعيين هذه الأذونات في ملف البيان

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

يعمل هذا بشكل جيد في الإصدار المحاكي Running 1.5 من Android عند تمكين 3G ، لكنه يعطل عندما أقوم بتعطيل اتصال 3G. يلقي طلبي استثناء مؤشر فارغ عندما أتصل بـ ISConnectedorConnecting (). يحدث نفس الشيء أيضًا على HTC Desire Mearch تشغيل Android 2.1.

آمل أن يعرف أي شخص الحل لهذا.

شكرا مقدما!

هل كانت مفيدة؟

المحلول

إذا كان الحادث مباشرة على خطك:

return cm.getActiveNetworkInfo().isConnectedOrConnecting();

ثم هذا يعني getActiveNetworkInfo() عاد null, ، لأنه لا توجد شبكة نشطة - في هذه الحالة ، الخاص بك isConnected() يجب أن تعود الطريقة false.

نصائح أخرى

كتبت هذه الطريقة للتعامل مع هذا:

public boolean isOnline() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni!=null && ni.isAvailable() && ni.isConnected()) {
        return true;
    } else {
        return false; 
    }
}

طريقة واحدة للقيام بذلك أعتقد ...

للتحقق من الإنترنت أو لا يمكن فحصه فقط على الجهاز ...... في المحاكي قد لا يعمل .... لقد حصلت على الكود التالي وعمله بنسبة 100 ٪ على جهاز Android ..... :)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tv = (TextView)findViewById(R.id.txt);
    b = checkInternetConnection();


    if(b!=true)
    {
        tv.setText("net is not dr.......");
    }
    else
    {
        tv.setText("net is dr.......");
    }

}
//Check weather Internet connection is available or not
public boolean checkInternetConnection() {
           final ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
           if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() &&    conMgr.getActiveNetworkInfo().isConnected()) {
                 return true;
           } else {
                 System.out.println("Internet Connection Not Present");
               return false;
           }
        }

}

لقد استخدمت هذا المقتطف.

ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null)
      {
          NetworkInfo[] info = connectivity.getAllNetworkInfo();
          if (info != null)
              for (int i = 0; i < info.length; i++)
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }

      }

استخدم هذا للاطلاع على ما إذا كان conneceted إلى wifi/3g:

is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();
    isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
    network = is3g||isWifi;

وهذا لتمكين WiFi بنفسك:

WifiManager wifiManager = (WifiManager) MainWindowYuval.this.getSystemService(Context.WIFI_SERVICE);
                    wifiManager.setWifiEnabled(true);      
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top