SORU
13 EKİM 2009, Salı


Nasıl Android üzerinde internet erişimi kontrol etmek için? İnetAddress asla zaman aşımı...

Ağ ana bilgisayar adı için erişim kontrol için beklenen bir AsyncTask var. Ama doInBackground() asla zaman aşımına uğradı. Herkes bir ipucu var mı?

public class HostAvailabilityTask extends AsyncTask<String, Void, Boolean> {

    private Main main;

    public HostAvailabilityTask(Main main) {
        this.main = main;
    }

    protected Boolean doInBackground(String... params) {
        Main.Log("doInBackground() isHostAvailable():" params[0]);

        try {
            return InetAddress.getByName(params[0]).isReachable(30); 
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;       
    }

    protected void onPostExecute(Boolean... result) {
        Main.Log("onPostExecute()");

        if(result[0] == false) {
            main.setContentView(R.layout.splash);
            return;
        }

        main.continueAfterHostCheck();
    }   
}

CEVAP
24 EKİM 2010, Pazar


@Eddie. Sadece bir küçük değişiklik your solution - eğer cihaz uçak modunda (ya da muhtemelen diğer durumlarda yok kullanılabilir ağ), cm.getActiveNetworkInfo() null, böylece ihtiyacınız Ekle null kontrol edin.

Modifiye çözüm aşağıda:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

Ayrıca AndroidManifest.xml aşağıdaki izin ekleyin:

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

Eğer kesinlikle zaman içinde belirli bir noktada ağ bağlantısı gerekiyorsa bir husus daha, o zaman daha iyi netInfo.isConnectedOrConnecting yerine netInfo.isConnected() kullanmak için olabilir. Bu indivudal-case kullanımı ancak sanırım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • TechBalance

    TechBalance

    12 HAZİRAN 2011