美文网首页
android链接WIFI局域网强制走数据访问外网办法

android链接WIFI局域网强制走数据访问外网办法

作者: 沈钦伟 | 来源:发表于2019-03-08 11:51 被阅读0次

    最近公司有个项目连接WIFI_Sd卡操作,手机在连接WIFI卡的时候,因为手机显示连接了WIFI就没法走数据了,可是WIFI卡本身没联网啊,又想在连接WIFI卡的时候,其他内容走移动数据外网,但是只能在Android6.0以上实现这功能

    OkHttpClientokHttpClient=null;

    public void getTestWifi(){

    final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkRequest.Builder builder =null;

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {

    builder =new NetworkRequest.Builder();

    builder.addCapability(NET_CAPABILITY_INTERNET);

    //强制使用蜂窝数据网络-移动数据

      builder.addTransportType(TRANSPORT_CELLULAR);

    NetworkRequest build = builder.build();

    connectivityManager.requestNetwork(build,new ConnectivityManager.NetworkCallback() {

    @Override

                public void onAvailable(Network network) {

    super.onAvailable(network);

    try {

    if(Build.VERSION.SDK_INT >=23) { connectivityManager.bindProcessToNetwork(network); //这句话要加上哈,不然设置不生效

     }else{// 23后这个方法舍弃了 ConnectivityManager.setProcessDefaultNetwork(network); }String url ="http://www.baidu.com";

    okHttpClient =new OkHttpClient();

    final Request request =new Request.Builder()

    .url(url)

    .get()//默认就是GET请求,可以不写

                            .build();

    Call call =okHttpClient.newCall(request);

    call.enqueue(new Callback() {

    @Override

                        public void onFailure(Call call, IOException e) {

    Log.d(TAG,"onFailure: ");

    }

    @Override

                        public void onResponse(Call call, Response response)throws IOException {

    Log.d(TAG,"onResponse: " + response.body().string());

    }

    });

    }catch (Exception e) {

    }

    }

    }

    }

    相关文章

      网友评论

          本文标题:android链接WIFI局域网强制走数据访问外网办法

          本文链接:https://www.haomeiwen.com/subject/oqxrpqtx.html