int bv = Build.VERSION.SDK_INT; boolean turnOnDataConnection(boolean ON,Context context) { try{ if(bv == Build.VERSION_CODES.FROYO) { Method dataConnSwitchmethod; Class<?> telephonyManagerClass; Object ITelephonyStub; Class<?> ITelephonyClass; TelephonyManager telephonyManager = (TelephonyManager) context .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); } else { //log.i("App running on Ginger bread+"); 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, ON); } return true; }catch(Exception e){ Log.e(TAG,"error turning on/off data"); return false; } }需要权限:<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
打开/关闭GPRS网络数据
最新推荐文章于 2021-09-27 16:18:21 发布
本文详细阐述了在Android环境下,通过反射机制实现数据连接开关的控制,并强调了在进行此操作时所需的权限。文章深入探讨了根据不同Android版本(如Froyo和Gingerbread+)使用不同类和方法的实现细节。
589

被折叠的 条评论
为什么被折叠?



