gpt4 book ai didi

android - 无需 Root 以编程方式启用/禁用移动数据(Lollipop 及以上版本)

转载 作者:行者123 更新时间:2023-11-29 23:35:41 24 4
gpt4 key购买 nike

我正在尝试在 android lollipop 及更高版本中以编程方式切换 android 数据连接,但它不起作用并且总是出现异常。

This is my code

public void setMobileDataState(boolean mobileDataEnabled)
{
try
{
TelephonyManager telephonyService = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

Method setMobileDataEnabledMethod = telephonyService.getClass().getDeclaredMethod("setDataEnabled", boolean.class);

if (null != setMobileDataEnabledMethod)
{
setMobileDataEnabledMethod.invoke(telephonyService, mobileDataEnabled);
}
}
catch (Exception ex)
{
Log.e(TAG, "Error setting mobile data state", ex);
}
}

最佳答案

此方法仅适用于root。实际上,由于 Lollipop 更新,无法以编程方式启用/禁用移动数据。你可以在低版本上这样做:

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 connectivityManagerField = conmanClass.getDeclaredField("mService");
connectivityManagerField.setAccessible(true);
final Object connectivityManager = connectivityManagerField.get(conman);
final Class connectivityManagerClass = Class.forName(connectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = connectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);

setMobileDataEnabledMethod.invoke(connectivityManager, enabled);

关于android - 无需 Root 以编程方式启用/禁用移动数据(Lollipop 及以上版本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52275136/

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