Android下如何同时开启wifi和移动网络

时间:2022-10-25 23:49:32
小弟前些天看到某大神通过加载wifi驱动的方式同时开启了Android下的wifi和3G网络,Linux不过关的我蒙羞是看不懂的,想请问能不能通过代码的方式同时在Android的机制下同时开启wifi和移动网络?应该如何实现呢? 希望有好心人帮助,共同学习,共同进步!

33 个解决方案

#1


通过API 可以主动连接一个可用的WIFI 和2G网络。 不知道你是不是想通过底层的方式弄。

#2


这感觉要去从底层修改看起吧

#3


但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。

#4


引用 1 楼 birdsaction 的回复:
通过API 可以主动连接一个可用的WIFI 和2G网络。 不知道你是不是想通过底层的方式弄。
是啊,但是底层小弟看不懂。。。

#5


开启wifi不会关闭移动网络,只是你连接上wifi后,网络通道默认走wifi通道,但是你可以设置,优先走移动网络通道,有adb命令:

svc wifi prefer 
    这个是默认的状态,有wifi就是wifi优先。

svc data prefer
    这个使移动数据连接比wifi优先。有移动数据开启的话先用移动数据,没有就用wifi。

另外开启/关闭 wifi 和移动数据的命令

svc data enable/disable
svc wifi enable/disable 

#6


还是android论坛比较火

#7


引用 6 楼 xmt1139057136 的回复:
还是android论坛比较火


不应该是灌水区最火么?各种姐妹贴

#8


引用 3 楼 u012074198 的回复:
但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。

#9


引用 5 楼 sagittarius1988 的回复:
开启wifi不会关闭移动网络,只是你连接上wifi后,网络通道默认走wifi通道,但是你可以设置,优先走移动网络通道,有adb命令:

svc wifi prefer 
    这个是默认的状态,有wifi就是wifi优先。

svc data prefer
    这个使移动数据连接比wifi优先。有移动数据开启的话先用移动数据,没有就用wifi。

另外开启/关闭 wifi 和移动数据的命令

svc data enable/disable
svc wifi enable/disable 
有没有办法让2个网络同时使用呢?

#10


引用 8 楼 lionfresh 的回复:
Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。

#11


引用 10 楼 u012074198 的回复:
Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?

#12


引用 11 楼 sagittarius1988 的回复:
Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊

#13


引用 12 楼 u012074198 的回复:
Quote: 引用 11 楼 sagittarius1988 的回复:

Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊


两个本来就能同时开的啊

#14


首先要想下你要同时打开达到什么目的

#15


引用 13 楼 sagittarius1988 的回复:
Quote: 引用 12 楼 u012074198 的回复:

Quote: 引用 11 楼 sagittarius1988 的回复:

Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊


两个本来就能同时开的啊
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。

#16


引用 14 楼 jeky198306 的回复:
首先要想下你要同时打开达到什么目的
我就是想问下怎么通过代码的方式同时开启wifi和无线网络。。。

#17


引用 13 楼 sagittarius1988 的回复:
Quote: 引用 12 楼 u012074198 的回复:

Quote: 引用 11 楼 sagittarius1988 的回复:

Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊


两个本来就能同时开的啊
似乎是开了wifi系统为了省电就会把移动网络关掉了,我看别人这样讲。

#18


这是打开数据网络的方法
private void setGprsEnable(boolean isEnable) {  
        int result = 0;  
ConnectivityManager mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  
        try {  
            Class clazz = Class.forName(mCM.getClass().getName());  
            Constructor[] cons = clazz.getDeclaredConstructors();  
            Constructor con = clazz.getConstructor();//getDeclaredConstructors();  
            con.setAccessible(true);  
  
            Field iConnectivityManagerField = clazz.getDeclaredField("mService");  
            iConnectivityManagerField.setAccessible(true);  
            Object iConnectivityManager = iConnectivityManagerField.get(mCM);  
            //Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());  
            ConnectivityManager cm =  (ConnectivityManager)con.newInstance(iConnectivityManager);  
            Class[] argClasses = new Class[1];  
            argClasses[0] = Boolean.class;  
            Method ms = clazz.getDeclaredMethod("setMobileDataEnabled", argClasses);  
            ms.setAccessible(true);  
            Object obj = ms.invoke(cm, isEnable);  
            result = (Integer) obj;  
        } catch (ClassNotFoundException e1) {  
            // TODO Auto-generated catch block  
            e1.printStackTrace();  
        } catch (IllegalArgumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InstantiationException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IllegalAccessException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InvocationTargetException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchMethodException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchFieldException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
}


打开wifi的
wifiManager.setWifiEnabled(true); 


不过打开移动数据的,可能有些系统有做修改的,可能会失效,不过都可以通过查看log或者看其setting的代码获取到打开的方法

另外,打开wifi连接上后,移动网络不会关,我的理解是只是处于暂停状态(源码没有看过,所以只是个人想法,至少状态栏那显示着移动网络的还是打开状态)

#19


引用 18 楼 sagittarius1988 的回复:
这是打开数据网络的方法
private void setGprsEnable(boolean isEnable) {  
        int result = 0;  
ConnectivityManager mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  
        try {  
            Class clazz = Class.forName(mCM.getClass().getName());  
            Constructor[] cons = clazz.getDeclaredConstructors();  
            Constructor con = clazz.getConstructor();//getDeclaredConstructors();  
            con.setAccessible(true);  
  
            Field iConnectivityManagerField = clazz.getDeclaredField("mService");  
            iConnectivityManagerField.setAccessible(true);  
            Object iConnectivityManager = iConnectivityManagerField.get(mCM);  
            //Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());  
            ConnectivityManager cm =  (ConnectivityManager)con.newInstance(iConnectivityManager);  
            Class[] argClasses = new Class[1];  
            argClasses[0] = Boolean.class;  
            Method ms = clazz.getDeclaredMethod("setMobileDataEnabled", argClasses);  
            ms.setAccessible(true);  
            Object obj = ms.invoke(cm, isEnable);  
            result = (Integer) obj;  
        } catch (ClassNotFoundException e1) {  
            // TODO Auto-generated catch block  
            e1.printStackTrace();  
        } catch (IllegalArgumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InstantiationException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IllegalAccessException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InvocationTargetException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchMethodException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchFieldException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
}


打开wifi的
wifiManager.setWifiEnabled(true); 


不过打开移动数据的,可能有些系统有做修改的,可能会失效,不过都可以通过查看log或者看其setting的代码获取到打开的方法

另外,打开wifi连接上后,移动网络不会关,我的理解是只是处于暂停状态(源码没有看过,所以只是个人想法,至少状态栏那显示着移动网络的还是打开状态)
这些我都在网上查到一些资料看到过了,不过还是谢谢您。

#20


楼主你好,请问你的问题解决了吗,我最近也遇到这种需求了,因为老板把一个android的wifi当串口去用了,连不到网络,还有一个后台服务器,我也需要可以同时适用wifi和3G的功能,有什么手段可以实现吗?

#21


同问哦,有高手指导下吗?

#22


引用 20 楼 lc7183627 的回复:
楼主你好,请问你的问题解决了吗,我最近也遇到这种需求了,因为老板把一个android的wifi当串口去用了,连不到网络,还有一个后台服务器,我也需要可以同时适用wifi和3G的功能,有什么手段可以实现吗?



引用 楼主 u012074198 的回复:
小弟前些天看到某大神通过加载wifi驱动的方式同时开启了Android下的wifi和3G网络,Linux不过关的我蒙羞是看不懂的,想请问能不能通过代码的方式同时在Android的机制下同时开启wifi和移动网络?应该如何实现呢? 希望有好心人帮助,共同学习,共同进步!


我也有这个需求,请问有什么头绪吗??

#23


我也有这个需求,wifi 用于局域网的 数据传输(内部网络), 把部分数据提取出来 发送指定的外网服务器(3G\4G)。

#24


有wifimanager

#25


我也有类似需求,请问楼主怎么解决的?麻烦告知下,谢谢!

#26


我也有类似需求,请问怎么解决的?麻烦告知下,谢谢!

#27


楼主,这个问题解决了吗?现在好头疼呀!网上的方式都试遍了,根本就不行呀!你有解决方案没呀?告诉下我吧! Android下如何同时开启wifi和移动网络

#28


我也要  在安卓客户端同时开 WIFI和3G,   WIFI是与设备通信,不是上网用。3G/4G用来传输到后台,各位大侠,有解决吗?

#29


我也是 真不知道 ,别人的平板是怎么做到的

#30


该回复于2016-05-24 13:24:54被管理员删除

#31


问题解决了吗,求思路,谢谢

#32


楼主啊,关于流量和wifi共存都能使用的问题解决没有啊

#33


同求啊,楼主怎么解决的

#1


通过API 可以主动连接一个可用的WIFI 和2G网络。 不知道你是不是想通过底层的方式弄。

#2


这感觉要去从底层修改看起吧

#3


但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。

#4


引用 1 楼 birdsaction 的回复:
通过API 可以主动连接一个可用的WIFI 和2G网络。 不知道你是不是想通过底层的方式弄。
是啊,但是底层小弟看不懂。。。

#5


开启wifi不会关闭移动网络,只是你连接上wifi后,网络通道默认走wifi通道,但是你可以设置,优先走移动网络通道,有adb命令:

svc wifi prefer 
    这个是默认的状态,有wifi就是wifi优先。

svc data prefer
    这个使移动数据连接比wifi优先。有移动数据开启的话先用移动数据,没有就用wifi。

另外开启/关闭 wifi 和移动数据的命令

svc data enable/disable
svc wifi enable/disable 

#6


还是android论坛比较火

#7


引用 6 楼 xmt1139057136 的回复:
还是android论坛比较火


不应该是灌水区最火么?各种姐妹贴

#8


引用 3 楼 u012074198 的回复:
但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。

#9


引用 5 楼 sagittarius1988 的回复:
开启wifi不会关闭移动网络,只是你连接上wifi后,网络通道默认走wifi通道,但是你可以设置,优先走移动网络通道,有adb命令:

svc wifi prefer 
    这个是默认的状态,有wifi就是wifi优先。

svc data prefer
    这个使移动数据连接比wifi优先。有移动数据开启的话先用移动数据,没有就用wifi。

另外开启/关闭 wifi 和移动数据的命令

svc data enable/disable
svc wifi enable/disable 
有没有办法让2个网络同时使用呢?

#10


引用 8 楼 lionfresh 的回复:
Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。

#11


引用 10 楼 u012074198 的回复:
Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?

#12


引用 11 楼 sagittarius1988 的回复:
Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊

#13


引用 12 楼 u012074198 的回复:
Quote: 引用 11 楼 sagittarius1988 的回复:

Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊


两个本来就能同时开的啊

#14


首先要想下你要同时打开达到什么目的

#15


引用 13 楼 sagittarius1988 的回复:
Quote: 引用 12 楼 u012074198 的回复:

Quote: 引用 11 楼 sagittarius1988 的回复:

Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊


两个本来就能同时开的啊
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。

#16


引用 14 楼 jeky198306 的回复:
首先要想下你要同时打开达到什么目的
我就是想问下怎么通过代码的方式同时开启wifi和无线网络。。。

#17


引用 13 楼 sagittarius1988 的回复:
Quote: 引用 12 楼 u012074198 的回复:

Quote: 引用 11 楼 sagittarius1988 的回复:

Quote: 引用 10 楼 u012074198 的回复:

Quote: 引用 8 楼 lionfresh 的回复:

Quote: 引用 3 楼 u012074198 的回复:

但是我看网上的解释说的是Android开启wifi时会关闭移动网络,我就是想问怎么才能跳过关闭移动网络这一个点,去开启wifi使两种网络能同时开启,由于小弟我的英语不太好,看了两天的源码也没怎么看明白,所以请求各位大神帮小弟解释解释。如果可以告诉我wifi开启运行时按什么顺序调用了哪部分的代码的话,小弟感激不尽。


不是关闭了移动网络,只是开启wifi后,将优先使用wifi。
不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。


你是想禁用某个程序使用wifi,然后使用3G?
我是想要让wifi和3G同时开启啊


两个本来就能同时开的啊
似乎是开了wifi系统为了省电就会把移动网络关掉了,我看别人这样讲。

#18


这是打开数据网络的方法
private void setGprsEnable(boolean isEnable) {  
        int result = 0;  
ConnectivityManager mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  
        try {  
            Class clazz = Class.forName(mCM.getClass().getName());  
            Constructor[] cons = clazz.getDeclaredConstructors();  
            Constructor con = clazz.getConstructor();//getDeclaredConstructors();  
            con.setAccessible(true);  
  
            Field iConnectivityManagerField = clazz.getDeclaredField("mService");  
            iConnectivityManagerField.setAccessible(true);  
            Object iConnectivityManager = iConnectivityManagerField.get(mCM);  
            //Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());  
            ConnectivityManager cm =  (ConnectivityManager)con.newInstance(iConnectivityManager);  
            Class[] argClasses = new Class[1];  
            argClasses[0] = Boolean.class;  
            Method ms = clazz.getDeclaredMethod("setMobileDataEnabled", argClasses);  
            ms.setAccessible(true);  
            Object obj = ms.invoke(cm, isEnable);  
            result = (Integer) obj;  
        } catch (ClassNotFoundException e1) {  
            // TODO Auto-generated catch block  
            e1.printStackTrace();  
        } catch (IllegalArgumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InstantiationException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IllegalAccessException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InvocationTargetException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchMethodException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchFieldException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
}


打开wifi的
wifiManager.setWifiEnabled(true); 


不过打开移动数据的,可能有些系统有做修改的,可能会失效,不过都可以通过查看log或者看其setting的代码获取到打开的方法

另外,打开wifi连接上后,移动网络不会关,我的理解是只是处于暂停状态(源码没有看过,所以只是个人想法,至少状态栏那显示着移动网络的还是打开状态)

#19


引用 18 楼 sagittarius1988 的回复:
这是打开数据网络的方法
private void setGprsEnable(boolean isEnable) {  
        int result = 0;  
ConnectivityManager mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  
        try {  
            Class clazz = Class.forName(mCM.getClass().getName());  
            Constructor[] cons = clazz.getDeclaredConstructors();  
            Constructor con = clazz.getConstructor();//getDeclaredConstructors();  
            con.setAccessible(true);  
  
            Field iConnectivityManagerField = clazz.getDeclaredField("mService");  
            iConnectivityManagerField.setAccessible(true);  
            Object iConnectivityManager = iConnectivityManagerField.get(mCM);  
            //Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());  
            ConnectivityManager cm =  (ConnectivityManager)con.newInstance(iConnectivityManager);  
            Class[] argClasses = new Class[1];  
            argClasses[0] = Boolean.class;  
            Method ms = clazz.getDeclaredMethod("setMobileDataEnabled", argClasses);  
            ms.setAccessible(true);  
            Object obj = ms.invoke(cm, isEnable);  
            result = (Integer) obj;  
        } catch (ClassNotFoundException e1) {  
            // TODO Auto-generated catch block  
            e1.printStackTrace();  
        } catch (IllegalArgumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InstantiationException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IllegalAccessException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (InvocationTargetException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchMethodException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (NoSuchFieldException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
}


打开wifi的
wifiManager.setWifiEnabled(true); 


不过打开移动数据的,可能有些系统有做修改的,可能会失效,不过都可以通过查看log或者看其setting的代码获取到打开的方法

另外,打开wifi连接上后,移动网络不会关,我的理解是只是处于暂停状态(源码没有看过,所以只是个人想法,至少状态栏那显示着移动网络的还是打开状态)
这些我都在网上查到一些资料看到过了,不过还是谢谢您。

#20


楼主你好,请问你的问题解决了吗,我最近也遇到这种需求了,因为老板把一个android的wifi当串口去用了,连不到网络,还有一个后台服务器,我也需要可以同时适用wifi和3G的功能,有什么手段可以实现吗?

#21


同问哦,有高手指导下吗?

#22


引用 20 楼 lc7183627 的回复:
楼主你好,请问你的问题解决了吗,我最近也遇到这种需求了,因为老板把一个android的wifi当串口去用了,连不到网络,还有一个后台服务器,我也需要可以同时适用wifi和3G的功能,有什么手段可以实现吗?



引用 楼主 u012074198 的回复:
小弟前些天看到某大神通过加载wifi驱动的方式同时开启了Android下的wifi和3G网络,Linux不过关的我蒙羞是看不懂的,想请问能不能通过代码的方式同时在Android的机制下同时开启wifi和移动网络?应该如何实现呢? 希望有好心人帮助,共同学习,共同进步!


我也有这个需求,请问有什么头绪吗??

#23


我也有这个需求,wifi 用于局域网的 数据传输(内部网络), 把部分数据提取出来 发送指定的外网服务器(3G\4G)。

#24


有wifimanager

#25


我也有类似需求,请问楼主怎么解决的?麻烦告知下,谢谢!

#26


我也有类似需求,请问怎么解决的?麻烦告知下,谢谢!

#27


楼主,这个问题解决了吗?现在好头疼呀!网上的方式都试遍了,根本就不行呀!你有解决方案没呀?告诉下我吧! Android下如何同时开启wifi和移动网络

#28


我也要  在安卓客户端同时开 WIFI和3G,   WIFI是与设备通信,不是上网用。3G/4G用来传输到后台,各位大侠,有解决吗?

#29


我也是 真不知道 ,别人的平板是怎么做到的

#30


该回复于2016-05-24 13:24:54被管理员删除

#31


问题解决了吗,求思路,谢谢

#32


楼主啊,关于流量和wifi共存都能使用的问题解决没有啊

#33


同求啊,楼主怎么解决的