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

  • Damian Winter

    Damian Winte

    27 ŞUBAT 2007
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • Top10Series

    Top10Series

    26 Kasım 2008