解决方案 »

  1.   

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

  2.   

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

  3.   

    开启wifi不会关闭移动网络,只是你连接上wifi后,网络通道默认走wifi通道,但是你可以设置,优先走移动网络通道,有adb命令:svc wifi prefer 
        这个是默认的状态,有wifi就是wifi优先。svc data prefer
        这个使移动数据连接比wifi优先。有移动数据开启的话先用移动数据,没有就用wifi。另外开启/关闭 wifi 和移动数据的命令svc data enable/disable
    svc wifi enable/disable 
      

  4.   


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

  5.   


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

  6.   


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

  7.   


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

  8.   


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

  9.   


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

  10.   

    我就是想问下怎么通过代码的方式同时开启wifi和无线网络
      

  11.   


    不是关闭了移动网络,只是开启wifi后,将优先使用wifi。不行哦,我使用海卓上网大师禁掉了应用程序的wifi功能,开启了3G网络和wifi,提示是联不到网络的,这样只能说明3G网络被关闭了不是吗。你是想禁用某个程序使用wifi,然后使用3G?我是想要让wifi和3G同时开启啊两个本来就能同时开的啊似乎是开了wifi系统为了省电就会把移动网络关掉了,我看别人这样讲。
      

  12.   

    这是打开数据网络的方法
    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连接上后,移动网络不会关,我的理解是只是处于暂停状态(源码没有看过,所以只是个人想法,至少状态栏那显示着移动网络的还是打开状态)
      

  13.   

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

  14.   

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