3 回答
TA贡献1946条经验 获得超3个赞
我使用的变通办法仅适用于有根电话。
该setMobileDataEnabled方法已从其中的ConnectivityManager两个方法中删除,getDataEnabled并setDataEnabled已添加TelephonyManager到此功能中。
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);
}
}
public boolean getMobileDataState()
{
try
{
TelephonyManager telephonyService = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Method getMobileDataEnabledMethod = telephonyService.getClass().getDeclaredMethod("getDataEnabled");
if (null != getMobileDataEnabledMethod)
{
boolean mobileDataEnabled = (Boolean) getMobileDataEnabledMethod.invoke(telephonyService);
return mobileDataEnabled;
}
}
catch (Exception ex)
{
Log.e(TAG, "Error getting mobile data state", ex);
}
return false;
}
但是您需要将此权限(MODIFY_PHONE_STATE)添加到清单文件中,否则将收到SecurityException。
TA贡献1847条经验 获得超7个赞
除非您拥有一部植根的手机,否则我认为您无法以编程方式启用和禁用数据,因为要这样做,我们必须包含仅授予系统或签名应用程序的MODIFY_PHONE_STATE权限。
setMobileDataEnabled()
该方法不再可以通过反射调用。从Android 2.1(API 7)到Android 4.4(API 19)可以通过反射调用,但是从Android 5.0及更高版本开始,即使使用植根电话,该setMobileDataEnabled()
方法也不能调用。
- 3 回答
- 0 关注
- 534 浏览
添加回答
举报