2012-07-26 1 views
9

bieten In meiner App möchte ich den Benutzer mit der Option zur Verfügung stellen Wi-Fi/GPRS für die Netzwerkverbindung zum Webserver. Kann Antworten auf die folgenden Fragen zu lösen mein Problem sein ... 1. Wie Sie überprüfen, welche die aktuelle Standard-Netzwerk-Konnektivität Option aktiviert ist. 2. Wie Wi-Fi/GPRS auf Benutzerauswahl aktivieren oder (Wi-Fi deaktivieren, wenn Benutzer GPRS wählt - wenn nur diese Option für GPRS erforderlich ist)Wie Option zur Wi-Fi oder GPRS für die Netzwerkkonnektivität in Android-App

oder gibt es anders herum mach das ?

Antwort

15

Versuchen Sie folgendes:

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

if (mWifi.isConnected()) 
    //if wifi connected 
} 

ConnectivityManager connManager1 = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo mMobile = connManager1.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

if (mMobile.isConnected()) { 
    //if internet connected 
} 

Vergessen Sie nicht, diese Berechtigungen in der Manifest-Datei hinzuzufügen;

android.permission.CHANGE_WIFI_STATE 
android.permission.ACCESS_WIFI_STATE 
android.permission.UPDATE_DEVICE_STATS 
android.permission.CHANGE_NETWORK_STATE 
android.permission.ACCESS_NETWORK_STATE 
android.permission.MODIFY_PHONE_STATE 
android.permission.READ_PHONE_STATE 

zu aktivieren oder zu deaktivieren, Wifi, mWiFi.setWifiEnabled(true|false)

So aktivieren/deaktivieren GPRS/3G, verwenden Sie den folgenden Code-Schnipsel.

void turnData(boolean ON) throws Exception 
{ 

if(bv == Build.VERSION_CODES.FROYO) 
{ 

    Log.i("version:", "Found Froyo"); 
    try{ 
     Method dataConnSwitchmethod; 
     Class telephonyManagerClass; 
     Object ITelephonyStub; 
     Class ITelephonyClass; 
     TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 

     telephonyManagerClass = Class.forName(telephonyManager.getClass().getName()); 
    Method getITelephonyMethod = telephonyManagerClass.getDeclaredMethod("getITelephony"); 
    getITelephonyMethod.setAccessible(true); 
    ITelephonyStub = getITelephonyMethod.invoke(telephonyManager); 
    ITelephonyClass = Class.forName(ITelephonyStub.getClass().getName()); 

    if (ON) { 
     dataConnSwitchmethod = ITelephonyClass.getDeclaredMethod("enableDataConnectivity"); 

    } else { 
     dataConnSwitchmethod = ITelephonyClass.getDeclaredMethod("disableDataConnectivity"); 
    } 
    dataConnSwitchmethod.setAccessible(true); 
    dataConnSwitchmethod.invoke(ITelephonyStub); 
    }catch(Exception e){ 
      Log.e("Error:",e.toString()); 
    } 

} 
else 
{ 
    Log.i("version:", "Found Gingerbread+"); 
    final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
    final Class conmanClass = Class.forName(conman.getClass().getName()); 
    final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService"); 
    iConnectivityManagerField.setAccessible(true); 
    final Object iConnectivityManager = iConnectivityManagerField.get(conman); 
    final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName()); 
    final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); 
    setMobileDataEnabledMethod.setAccessible(true); 
    setMobileDataEnabledMethod.invoke(iConnectivityManager, ON); 
} 

}

+0

Thanx eine Tonne ... arbeitet – isumit

+1

+1 für die Internet-Daten in Ordnung, obwohl ich nicht auf diese Weise zu aktivieren wifi habe es geschafft, weil setWifiEnabled ein Verfahren zur Herstellung WifiManager ist Das ist für mich gearbeitet WifiManager wifiManager = (WifiManager) diese .getApplicationContext(). getSystemService (Kontext.WIFI_SERVICE); wifiManager.setWifiEnabled (true); –

3

Sie Option, um Benutzer auf dem Bildschirm zur Verfügung stellen kann folgenden Codeblock mit ....

public static ShowAvailable() 
{ 
    ConnectivityManager connectivityMgr = (ConnectivityManager) 
    getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo[] nwInfos = connectivityMgr.getAllNetworkInfo(); 
     for (NetworkInfo nwInfo : nwInfos) 
      { 
      Log.d(TAG, "Network Type Name: " + 
      nwInfo.getTypeName()); Log.d(TAG, "Network available: " + 
      nwInfo.isAvailable()); Log.d(TAG, "Network c_or-c: " + 
      nwInfo.isConnectedOrConnecting()); Log.d(TAG, "Network connected: " 
      + nwInfo.isConnected()); 
      } 

} 
1

die @rIHaN Jithin Antwort fortsetzen, sollte es, dass zwei Berechtigungen zu beachten, android.permission.UPDATE_DEVICE_STATS und android.permission.MODIFY_PHONE_STATE werden nur der System-App zugewiesen (wie sie ursprünglich in Eclipse oder Android Studio festgelegt wurde). Wenn also jemand mit diesem Problem konfrontiert wird, schauen Sie sich this solution an.

Verwandte Themen