usar queda porque moviles los lanix desactivar datos como celular arreglar apagar agarra activar activando activa android 3g

queda - ¿Cómo puedo desactivar 3G/Data programáticamente en Android?



mi wifi se queda en activando (4)

No hay forma oficial de hacer esto. Sin embargo, se puede lograr extraoficialmente con la reflexión.

Para Android 2.3 y superior:

private void setMobileDataEnabled(Context context, boolean enabled) { final ConnectivityManager conman = (ConnectivityManager) context.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, enabled); }

Esto también requiere el siguiente permiso.

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

Para Android 2.2 y abajo:

Method dataConnSwitchmethod; Class telephonyManagerClass; Object ITelephonyStub; Class ITelephonyClass; TelephonyManager telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if(telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED){ isEnabled = true; }else{ isEnabled = false; } 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 (isEnabled) { dataConnSwitchmethod = ITelephonyClass .getDeclaredMethod("disableDataConnectivity"); } else { dataConnSwitchmethod = ITelephonyClass .getDeclaredMethod("enableDataConnectivity"); } dataConnSwitchmethod.setAccessible(true); dataConnSwitchmethod.invoke(ITelephonyStub);

Esto requirió el siguiente permiso:

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

Tenga en cuenta que ambos no son oficiales y es posible que ya no funcionen. No se necesitan más pruebas de este tipo de ruptura, ya que el método 2.2 y siguientes se rompió en 2.3.

¿Cómo puedo desactivar 3G / Data programáticamente en Android?

No Wifi, pero 3G / Datos.


Rodea el código con try / catch blocks

public void mobiledataenable(boolean enabled) { try { final ConnectivityManager conman = (ConnectivityManager)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, enabled); } catch (Exception e) { e.printStackTrace(); } }

En el Manifiesto, agregue el siguiente permiso:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>


Todavía estoy en 2.1, por lo que esta solución funciona para mí.

Pero también debe incluir el permiso MODIFY_PHONE_STATE.

Código completo (con un botón de toogle) 2.1:

package com.rivaldo.turn3gonoff; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.telephony.TelephonyManager; import android.view.Menu; import android.widget.CompoundButton; import android.widget.ToggleButton; public class Turn3GOnOff extends Activity { Method dataConnSwitchmethod_ON; Method dataConnSwitchmethod_OFF; Class telephonyManagerClass; Object ITelephonyStub; Class ITelephonyClass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_turn3_gon_off); GetDataConnectionAPI(); ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton); toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { turn3GOn(); } else { turn3GOff(); } } }); } private void GetDataConnectionAPI() { this.getApplicationContext(); TelephonyManager telephonyManager = (TelephonyManager) this.getApplicationContext(). getSystemService(Context.TELEPHONY_SERVICE); try { telephonyManagerClass = Class.forName(telephonyManager.getClass().getName()); Method getITelephonyMethod = telephonyManagerClass.getDeclaredMethod("getITelephony"); getITelephonyMethod.setAccessible(true); ITelephonyStub = getITelephonyMethod.invoke(telephonyManager); ITelephonyClass = Class.forName(ITelephonyStub.getClass().getName()); dataConnSwitchmethod_OFF = ITelephonyClass.getDeclaredMethod("disableDataConnectivity"); dataConnSwitchmethod_ON = ITelephonyClass.getDeclaredMethod("enableDataConnectivity"); } catch (Exception e) { // ugly but works for me e.printStackTrace(); } } private void turn3GOn() { dataConnSwitchmethod_ON.setAccessible(true); try { dataConnSwitchmethod_ON.invoke(ITelephonyStub); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } private void turn3GOff() { dataConnSwitchmethod_OFF.setAccessible(true); try { dataConnSwitchmethod_OFF.invoke(ITelephonyStub); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.rivaldo.turn3gonoff" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.rivaldo.turn3gonoff.Turn3GOnOff" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

activity_turn3_gon_off.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".Turn3GOnOff" > <ToggleButton android:id="@+id/toggleButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="60dp" android:textOn="3G on" android:textOff="3G off" android:text="ToggleButton" /> </RelativeLayout>


public void onClick(View view){ ConnectivityManager dataManager; dataManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); Method dataMtd = null; try { dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } dataMtd.setAccessible(true); try { dataMtd.invoke(dataManager, true); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } }