Android Q网络状态判断,亲测可用
发布日期:2021-05-08 18:10:54 浏览次数:14 分类:原创文章

本文共 3809 字,大约阅读时间需要 12 分钟。

package com.example.androidinterviewjxd.utils;import android.content.Context;import android.net.ConnectivityManager;import android.net.Network;import android.net.NetworkCapabilities;public class NetworkUtils {    /**     * 判断当前网络是否连接     * @param context     * @return     */    public static boolean isNetworkConnected(Context context){        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        Network network = connectivityManager.getActiveNetwork();        NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);        return networkCapabilities!=null;    }    /**     * 判断当前的网络类型是wifi,流量还是有线网络     * @param context     * @return     */    public static String getCurrentNetworkType(Context context){        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        Network network = connectivityManager.getActiveNetwork();        NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);        if(networkCapabilities==null){            return "no network";        }else if(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){            return "Wifi";        }else if(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){            return "Mobile";        }//        else if(networkCapabilities.hasCapability(NetworkCapabilities.TRANSPORT_ETHERNET)){//            return "Ethernet";//        }        return "other";    }}

以上是网络状态判断,网络状态注册监听和解注册的代码如下:

 private static ConnectivityManager connectivityManager;    public static void registerNetworkListener(Context context){        if (connectivityManager==null){            connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        }              NetworkRequest.Builder builder = new NetworkRequest.Builder();        NetworkRequest request = builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)                .build();        connectivityManager.requestNetwork(request,networkCallback);    }        public static void unRegisterNetworkListener(Context context){        if (connectivityManager==null){            connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        }        connectivityManager.unregisterNetworkCallback(networkCallback);    }        private static ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback(){        @Override        public void onAvailable(@NonNull Network network) {            super.onAvailable(network);        }        @Override        public void onLosing(@NonNull Network network, int maxMsToLive) {            super.onLosing(network, maxMsToLive);        }        @Override        public void onLost(@NonNull Network network) {            super.onLost(network);        }        @Override        public void onUnavailable() {            super.onUnavailable();        }        @Override        public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {            super.onCapabilitiesChanged(network, networkCapabilities);        }        @Override        public void onLinkPropertiesChanged(@NonNull Network network, @NonNull LinkProperties linkProperties) {            super.onLinkPropertiesChanged(network, linkProperties);        }        @Override        public void onBlockedStatusChanged(Network network, boolean blocked) {            super.onBlockedStatusChanged(network, blocked);        }    };

 

上一篇:Androidstudio adb wifi插件使用
下一篇:TCL安卓开发面试题

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月02日 02时02分40秒