2011-10-28 13 views
6

Jestem zaskoczony, że nie mogę znaleźć żadnych informacji w Internecie na temat tej wspólnej sytuacji: Jak mogę uruchomić połączenie internetowe? Spojrzałem na ConnectivityManager, ale wygląda na to, że służy wyłącznie do monitorowania łączności sieciowej.Android: ustanów połączenie z Internetem

PS: Telefon zostanie zrootowany, więc nie stanowi to problemu.

+1

„? Jak mogę uruchomić connetion Internetu”, czyli to, co chcesz zrobić? – user370305

+0

Załóżmy, że chcę programowo otworzyć połączenie Wi-Fi w sieci prywatnej. Następnie chcę połączyć się z danymi uplaod/download serwera ... – Caner

+3

musisz monitorować czy wifi jest włączone czy nie? jeśli nie, po prostu otwórz okno dialogowe łączności WiFi i przejdziesz do ustawień Wi-Fi. – user370305

Odpowiedz

1

Znalazłem następujące rozwiązanie:

1) Dodaj preferowanym wifi/APN (Access Point Name) konfigurację ustawień telefonu
2) Włącz Fi/APN
3) połączenie będzie automatycznie

konfiguracja internet jest str aightforward i dodaje strona pokazuje, jak można to zrobić:

How to programmatically create and read WEP/EAP WiFi configurations in Android?

konfiguracja APN jest trudne. Android ma ukryte interfejsy API, które umożliwiają dostęp do tych ustawień i ich modyfikację. Aby to zrobić, musisz użyć Reflection. To może oczywiście zepsuć się z przyszłymi wersjami Androida.Poniższa strona wyjaśnia, jak uzyskać dostęp do/zmienić te ustawienia:

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

1

Rzeczywiście można włączyć lub wyłączyć Wi-Fi (patrz także this article) , ale nie ma gwarancji, że jeśli wifi jest włączone, będzie połączenie internetowe.

Menedżer połączeń pozwala tylko na sprawdzenie bieżącego stanu łączności. Nie można go użyć do włączenia połączenia. Również ConnectivityManager nie ma wiedzy, czy aktywne połączenie sieciowe jest połączeniem internetowym, ale łatwo można to sprawdzić samodzielnie (patrz np. this post ).

0

Gniazda są tym, czego potrzebujesz. Aby uzyskać podstawowe informacje na ich temat, przeczytaj to tutaj: http://en.wikipedia.org/wiki/Internet_socket Nie musisz czytać wszystkiego, ale uważam, że ważne jest, abyś przeczytał przynajmniej wszystkie "problemy z implementacją", aby zapoznać się z metodami gniazd. Te metody są oczywiście wdrażane inaczej dla każdej platformy (Windows, Android ...), ale zwykle robią to samo wszędzie. Kiedy zrozumiesz, co każdy z nich robi, możesz z łatwością pracować z gniazdami na dowolnej platformie.

Ten schemat (Z wiki) pomaga zademonstrować użycie gniazd: enter image description here

Jesteś na stronie klienta. Dlatego po prostu utwórz gniazdo i zadzwoń pod metodę connect dla adresu IP twojego serwera.

Osobiście nigdy nie korzystałem z gniazd w rozwoju Androida. Ale myślę, że należy korzystać z tej klasy: http://developer.android.com/reference/java/net/Socket.html

+0

Gniazda mogą być rozwiązaniem, ale mają raczej niski poziom. Być może łatwiej będzie skonfigurować [ftp] (http://stackoverflow.com/questions/1567601/android-ftp-library) lub [połączenie http] (http://developer.android.com/reference/java/net /HttpURLConnection.html) jeśli serwer OP próbuje połączyć to. – THelper

+0

Gniazda są podstawowymi; Lepiej je zrozumieć, a następnie użyć klasy wyższego poziomu, która otacza gniazdo samo w sobie. Poza tym te klasy są owijkami gniazd do zastosowania w bardzo specyficznych protokołach. Ponieważ nie wiemy, jaki protokół potrzebuje oryginalny plakat, nie możemy mu powiedzieć, żeby używał dowolnego, ale podstawowego gniazda. – Jong

+0

Ale to nie odpowiada na pytanie. Jak korzystać z gniazda internetowego w pierwszej kolejności? – Caner

2

Jeśli chcesz po prostu włączyć WiFi można użyć tej metody:

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

Sprawdź uprawnienia wymagane do tego. Myślę, że należy dodać te uprawnienia:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
+0

ok, ale co powiesz na 3g? – Caner

+0

To nie jest takie proste. Ta funkcja zależy od wersji. Na przykład możesz zajrzeć tutaj, jak to zrobić: http://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android – Yury

+0

Powinieneś wiedzieć, że połączenie Wi-Fi i danych jest zwykle niemożliwe być włączane jednocześnie. – Yury

Powiązane problemy