gpt4 book ai didi

android - 使用代码启用/禁用移动数据 (GPRS)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:03 29 4
gpt4 key购买 nike

我有一个用于启用和禁用在 API 8 和 10 中运行良好的数据的解决方案,但该代码与 ICS 不兼容,我需要一个全局解决方案,以便相同的代码必须与 API 8 兼容迄今为止的 Android 操作系统版本。

最佳答案

使用以下方法。它适用于所有 Android 版本。

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.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

更新:

从 Android L 开始,这仅适用于系统应用程序

关于android - 使用代码启用/禁用移动数据 (GPRS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13523396/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com