如何通过程序打开或关闭3G数据流量

针对于android2.2 以上系统, 官方没有提供直接的方式和资料供我们使用. 所以我们需要通过反射的方式, 来调用iConnectivityManagerClass的setMobileDataEnabled 方法.


首先,我们需要在manifest.xml中添加对应的权限.

然后我们实现如下方法既可.

private void setMobileDataEnabled(Context context, boolean enabled) {
    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);
}

 

此篇文章已被阅读2315 次

Add a Comment

邮箱地址不会被公开。 必填项已用*标注