在我的android上,我使用WIFI和3gdata流量如何打开和关闭3g数据,因为它不是无限的…我只需要一个类/功能代码行,即可向我显示TelephonyManager.DATA_TRAFIC为enable = false;
解决方法:
这取决于您正在运行的Android版本.我开发的小部件为Take a look at my code.
您需要的代码行是
TelephonyManager telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED) { isEnabled = true; } else { isEnabled = false; }
“旧版”方法适用于使用TelephonyManager的2.2之前的androID版本.
// 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.2public 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()); }}
总结 以上是内存溢出为你收集整理的我需要ACCESS_WIFI_STATE之类的东西,但是我可以通过3g使用dataTrafiic全部内容,希望文章能够帮你解决我需要ACCESS_WIFI_STATE之类的东西,但是我可以通过3g使用dataTrafiic所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)