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

  • LiquidMusick

    LiquidMusick

    23 Aralık 2010
  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006
  • Rayone GB

    Rayone GB

    14 Temmuz 2007