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

  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009
  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008