Android: İnternet bağlantısı kurun

Bu yaygın durumda internette herhangi bir bilgi bulamadığım için şaşırıyorum: Bir internet bağlantısını nasıl başlatabilirim? ConnectivityManager 'a baktım ama görünüyor sadece ağ bağlantısını izlemek içindir.

Not: Telefon köklenecek, bu yüzden sorun değil.

6
Özel bir ağda programlı olarak bir wifi bağlantısı açmak istediğimi varsayalım. Ardından sunucuya uplink/indirme verisine bağlanmak istiyorum ...
katma yazar Caner, kaynak
Bu doğru değil, bir yöntem var WifiManager.setWifiEnabled()
katma yazar Caner, kaynak
Kullanıcı etkileşimini istemiyorum, herşeyi kendisi yapmalı.
katma yazar Caner, kaynak
Ben öyle düşünmüyorum, kullanıcı etkileşimi olmadan wifi'yi etkinleştiremezsiniz. güvenlik nedeni olabilir.
katma yazar user370305, kaynak
o zaman izlemeniz gerekir wifi etkin ya da değil mi? değilse, sadece bir wifi bağlantısı iletişim kutusunu açın ve wifi ayarlarına iner.
katma yazar user370305, kaynak
"İnternet bağlantısına nasıl başlayabilirim?", Yapmak istediğiniz şeyi ifade ediyor musunuz?
katma yazar user370305, kaynak
Ne yapmak istediğinizden emin değilim, bir sunucuya bağlanmak isterseniz, URL gibi sınıfları deneyebilirsiniz: docs.oracle.com/javase/1.4.2/docs/api/java/net/URL.html ve openConnection() yöntemi veya daha gelişmiş kullanım için, HttpClient sizin kullanımınıza olabilir: geliştirici.android.com/reference/org/apache/http/client/…
katma yazar Jave, kaynak

4 cevap

WiFi'yi basitçe etkinleştirmek istiyorsanız, bu yöntemi kullanabilirsiniz:

private boolean changeWifiState(boolean state) {
    final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    wifi.setWifiEnabled(state);
    return wifi.isWifiEnabled();
}

Bunun için gerekli izinleri kontrol edin. Bu izinleri eklemelisiniz:



2
katma
+1 faydalı cevap için teşekkür ederim. Ancak bu tam olarak ihtiyacım olan şey değildi (cevabımı görün)
katma yazar Caner, kaynak
Tamam, ama nasıl 3g?
katma yazar Caner, kaynak
O kadar kolay değil. Ve bu işlevsellik sürümü bağımlıdır. Örneğin, burada nasıl yapılacağına bakabilirsiniz: android üzerindeki veriler "> stackoverflow.com/questions/3644144/…
katma yazar Yury, kaynak
Ayrıca, Wifi ve veri bağlantısının genellikle aynı anda etkinleştirilemeyeceğini bilmelisiniz.
katma yazar Yury, kaynak

Aşağıdaki çözümü buldum:

1) Add preferred wifi/APN(Access Point Name) configuration to phone settings
2) Enable Wifi/APN
3) Connection will be established automatically

Wifi yapılandırması basittir ve aşağıdaki sayfa nasıl yapılabileceğini gösterir:

WEP programsal olarak nasıl oluşturulur ve okunur Android'de EAP WiFi yapılandırmaları

APN yapılandırması zor. Android'in bu ayarlara erişmenizi/değiştirmenizi sağlayan bazı gizli API'leri var ve bunu yapmak için Yansıma 'yı kullanmanız gerekiyor. Bu elbette Android'in gelecekteki sürümleriyle kırılabilir. Aşağıdaki sayfa bu ayarların nasıl değiştirileceğini/değiştirileceğini açıklamaktadır:

http: //blogs.msdn.com/b/zhengpei/archive/2009/10/13/managing-apn-data-in-google-android.aspx

1
katma

Gerçekten de wifi'yi açıp kapatabilirsiniz (ayrıca bkz. bu makale Ancak, wifi açık olduğunda internet bağlantısının olacağını garanti etmez.

ConnectivityManager sadece geçerli bağlantı durumunu kontrol etmenizi sağlar. Bir bağlantıyı etkinleştirmek için kullanamazsınız. Ayrıca, ConnectivityManager'ın aktif bir ağ bağlantısının internet bağlantısı olup olmadığı konusunda bilgisi yoktur, ancak bunu kendiniz kontrol etmek kolaydır (bkz. bu gönderi Örneğin).

1
katma

Soketler ihtiyacınız olan şeydir. Onlara temel bilgilerinizi almak için, buradan okuyun: http://en.wikipedia.org/wiki/Internet_socket Okumak zorunda değilsiniz her şey, ama önemli olduğunu düşünüyorum soket yöntemlerini tanımak için tüm "uygulama sorunları" en az okuyun. Bu yöntemler, elbette, her platform için farklı şekilde uygulanmaktadır (Windows, Android ...) ancak genellikle aynı her yerde kullanırlar. Yani, her birinin ne yaptığını anladıktan sonra, herhangi bir platformda yuvalarla kolaylıkla çalışabilirsiniz.

This diagram (From wiki) helps to demonstrate the sockets usage: enter image description here

Müşteri tarafındasın. Bu yüzden sadece bir soket oluşturun ve sunucunuzun IP adresi için connect yöntemini çağırın.

Personally, I have never used sockets in Android development. But I think you should use this class: http://developer.android.com/reference/java/net/Socket.html

0
katma
Bir telefon internete birçok şekilde bağlanabilir. Roaming kullanabilir, Wifi, kablo vb. İle bir PC'ye bağlanabilir. Bunu kontrol edebilmek istiyorum.
katma yazar Caner, kaynak
Ama bu soruya cevap vermiyor. İnternet bağlantı soketini ilk etapta nasıl kullanacağım?
katma yazar Caner, kaynak
Soketler temeldir; Onları anlamak daha iyi, daha sonra soketi kendi kendine saran daha yüksek bir sınıf kullanın. Ayrıca, bu sınıflar çok özel protokollerde kullanılmak üzere soketlerdir. Orijinal posterin hangi protokole ihtiyaç duyduğunu bilmediğimizden, ona herhangi bir temel soketi kullanmasını söyleyemeyiz.
katma yazar Jong, kaynak
Bir soket oluşturmamanız ve onu bir sunucuya ya da başka bir şeye bağlıyorsanız, internet bağlantısı kurarak ne demek istiyorsunuz?
katma yazar Jong, kaynak
Cihazın internet erişimine sahip olduğu yöntemi kontrol etmek mi istiyorsunuz?
katma yazar Jong, kaynak
Soketler bir çözüm olabilir, ancak oldukça düşük seviyededirler. Bir ftp veya http connection .
katma yazar THelper, kaynak