2012-02-23 3 views

答えて

4

あなたが実行しているアンドロイドのバージョンによって異なります。私が開発したウィジェットのTake a look at my code

必要なコードの行は、「レガシー」メソッドがTelephonyManagerを使用する前の2.2アンドロイド版です

TelephonyManager telephonyManager = (TelephonyManager) context 
      .getSystemService(Context.TELEPHONY_SERVICE); 

    if (telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED) { 
     isEnabled = true; 
    } else { 
     isEnabled = false; 
    } 

です。

// 2.2+ 
private void setMobileDataEnabled(Context context, boolean enabled) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException { 
    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); 
} 

public static boolean isMobileDataConnected(Context context) { 
    try { 
     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("getMobileDataEnabled"); 
     setMobileDataEnabledMethod.setAccessible(true); 

     return Boolean.valueOf(setMobileDataEnabledMethod.invoke(iConnectivityManager).toString()); 
    } catch (Exception e) { 
     Log.e("NetSwitcher", e.toString()); 
    } 
    return false; 
} 

// pre 2.2 
public static void setMobileDataEnabledLegacy(Context context) { 
    boolean isEnabled = false; 
    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; 
    } 
    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()); 

     if (isEnabled) { 
      dataConnSwitchmethod = ITelephonyClass 
        .getDeclaredMethod("disableDataConnectivity"); 
     } else { 
      dataConnSwitchmethod = ITelephonyClass 
        .getDeclaredMethod("enableDataConnectivity"); 
     } 
     dataConnSwitchmethod.setAccessible(true); 
     dataConnSwitchmethod.invoke(ITelephonyStub); 
    } catch (Exception e) { 
     Log.e("NetSwitcher", e.toString()); 
    } 
} 
+0

ファラ、NEMI DAVA 10分mislamデカOVA E TOA STO MI treba..pozz – Tony

+0

海ダpominatは – Tony

+0

東亜znaciデカ和mnogu BRZをporano :) –

関連する問題