最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android網絡監(jiān)聽和網絡判斷示例介紹

 更新時間:2021年12月09日 11:37:14   作者:抱著回憶旅行  
大家好,本篇文章主要講的是Android網絡監(jiān)聽和網絡判斷示例介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

一、在AndroidMainfest.xml中添加權限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

二、NetUtilSS 網絡判斷工具類

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
import android.util.Log;
import java.util.List;
 
 
public class NetUtilSS {
    // 沒有連接
    public static final int NETWORN_NONE = 0;
    // wifi連接
    public static final int NETWORN_WIFI = 1;
    // 手機網絡數(shù)據連接
    public static final int NETWORN_2G = 2;
 
    public static final int NETWORN_3G = 3;
 
    public static final int NETWORN_4G = 4;
 
    public static final int NETWORN_MOBILE = 5;
 
    private NetUtilSS() {
        /* cannot be instantiated */
        throw new UnsupportedOperationException("cannot be instantiated");
    }
 
    /**
     * 判斷網絡是否連接
     *
     * @param context
     * @return
     */
    public static boolean isConnected(Context context) {
 
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        // 如果僅僅是用來判斷網絡連接
 
        if (null != connectivity) {
 
            NetworkInfo info = connectivity.getActiveNetworkInfo();
            if (null != info && info.isConnected()) {
                if (info.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
        return false;
    }
 
    /**
     * 判斷GPS是否打開
     *
     * @param context
     * @return
     */
 
    public static boolean isGpsEnabled(Context context) {
        LocationManager lm = ((LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE));
        List<String> accessibleProviders = lm.getProviders(true);
        return accessibleProviders != null && accessibleProviders.size() > 0;
    }
 
    /**
     * 判斷是否是3G網絡
     * @param context
     * @return
     */
 
    public static boolean is3rd(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkINfo = cm.getActiveNetworkInfo();
        if (networkINfo != null
                && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {
            return true;
        }
        return false;
    }
 
    /**
     * 判斷是wifi還是3g網絡,用戶的體現(xiàn)性在這里了,wifi就可以建議下載或者在線播放。
     *
     * @param context
     * @return
     */
 
    public static boolean isWifi(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkINfo = cm.getActiveNetworkInfo();
        if (networkINfo != null
                && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {
            return true;
        }
        return false;
    }
 
    /**
     * 打開網絡設置界面
     */
    public static void openSetting(final Activity activity) {
        Log.e("netutils", "我是網絡1111");
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("開啟網絡服務");
        builder.setMessage("網絡沒有連接,請到設置進行網絡設置!");
        builder.setPositiveButton("確定",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        if (android.os.Build.VERSION.SDK_INT > 10) {
                            // 3.0以上打開設置界面,也可以直接用ACTION_WIRELESS_SETTINGS打開到wifi界面
                            activity.startActivity(new Intent(
                                    android.provider.Settings.ACTION_SETTINGS));
                        } else {
                            activity.startActivity(new Intent(
                                    android.provider.Settings.ACTION_WIRELESS_SETTINGS));
                        }
                        dialog.cancel();
                    }
                });
 
        builder.setNegativeButton("取消",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
 
                        Log.e("netutils", "我是網絡");
                    }
                });
        builder.show();
    }
 
    /**
     * 返回當前網絡連接類型
     *
     * @param context 上下文
     * @return
     */
    public static int getNetworkState(Context context) {
 
        ConnectivityManager connManager = (ConnectivityManager) context
 
                .getSystemService(Context.CONNECTIVITY_SERVICE);
 
        if (null == connManager)
 
            return NETWORN_NONE;
 
        NetworkInfo activeNetInfo = connManager.getActiveNetworkInfo();
 
        if (activeNetInfo == null || !activeNetInfo.isAvailable()) {
 
            return NETWORN_NONE;
 
        }
        // Wifi
        NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
 
        if (null != wifiInfo) {
 
            NetworkInfo.State state = wifiInfo.getState();
 
            if (null != state)
 
                if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {
 
                    return NETWORN_WIFI;
 
                }
 
        }
        // 網絡
        NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 
        if (null != networkInfo) {
 
            NetworkInfo.State state = networkInfo.getState();
 
            String strSubTypeName = networkInfo.getSubtypeName();
 
            if (null != state)
                if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {
 
                    switch (activeNetInfo.getSubtype()) {
 
                        case TelephonyManager.NETWORK_TYPE_GPRS: // 聯(lián)通2g
 
                        case TelephonyManager.NETWORK_TYPE_CDMA: // 電信2g
 
                        case TelephonyManager.NETWORK_TYPE_EDGE: // 移動2g
 
                        case TelephonyManager.NETWORK_TYPE_1xRTT:
 
                        case TelephonyManager.NETWORK_TYPE_IDEN:
 
                            return NETWORN_2G;
 
                        case TelephonyManager.NETWORK_TYPE_EVDO_A: // 電信3g
 
                        case TelephonyManager.NETWORK_TYPE_UMTS:
 
                        case TelephonyManager.NETWORK_TYPE_EVDO_0:
 
                        case TelephonyManager.NETWORK_TYPE_HSDPA:
 
                        case TelephonyManager.NETWORK_TYPE_HSUPA:
 
                        case TelephonyManager.NETWORK_TYPE_HSPA:
 
                        case TelephonyManager.NETWORK_TYPE_EVDO_B:
 
                        case TelephonyManager.NETWORK_TYPE_EHRPD:
 
                        case TelephonyManager.NETWORK_TYPE_HSPAP:
 
                            return NETWORN_3G;
 
                        case TelephonyManager.NETWORK_TYPE_LTE:
 
                            return NETWORN_4G;
 
                        default://有機型返回16,17
 
                            //中國移動 聯(lián)通 電信 三種3G制式
 
                            if (strSubTypeName.equalsIgnoreCase("TD-SCDMA") || strSubTypeName.equalsIgnoreCase("WCDMA") || strSubTypeName.equalsIgnoreCase("CDMA2000")) {
 
                                return NETWORN_3G;
 
                            } else {
 
                                return NETWORN_MOBILE;
 
                            }
                    }
                }
        }
        return NETWORN_NONE;
    }
}

三、IntentReceiver網絡監(jiān)聽工具類

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
 
public class IntentReceiver extends BroadcastReceiver {
    private boolean isnet ;
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
        if (isnet == true){
            if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()){
                ToastUtils.getInstance(context).show("網絡連接成功",1000);
                SpUtils.putString(context,"network","有網");
                isnet = false;
            }else{
                ToastUtils.getInstance(context).show("網絡開小差了",1000);
                SpUtils.putString(context,"network","無網");
                isnet = true;
            }
        }else{
            isnet = true;
        }
        isnet = true;
    }
}

四、BaseActivity

import androidx.appcompat.app.AppCompatActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.widget.Toast;
 
public class BaseActivity extends AppCompatActivity {
 
    private BroadcastReceiver receiver =  new IntentReceiver();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
 
        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        this.registerReceiver(receiver,filter);
 
        boolean connected = NetUtilSS.isConnected(this);
        if (connected) {
            boolean wifi = NetUtilSS.isWifi(this);
            boolean rd = NetUtilSS.is3rd(this);
            if (wifi) {
                Toast.makeText(this, "WIFI已經連接", Toast.LENGTH_SHORT).show();
                SpUtils.putString(this,"network","有網");
            } else if (rd) {
                Toast.makeText(this, "手機流量已經連接", Toast.LENGTH_SHORT).show();
                SpUtils.putString(this,"network","有網");
            } else {
                Toast.makeText(this, "網絡連接不可用,請檢查網絡設置", Toast.LENGTH_SHORT).show();
                SpUtils.putString(this,"network","無網");
//                NetUtilSS.openSetting((Activity) mContext);
            }
        } else {
            Toast.makeText(this, "網絡連接不可用,請檢查網絡設置", Toast.LENGTH_SHORT).show();
            SpUtils.putString(this,"network","無網");
//            NetUtilSS.openSetting((Activity) mContext);
        }
    }
 
    public static boolean isNetwork(Context context){
        String network = SpUtils.getString(context, "network");
        if (network.equals("有網")){
            return true;
        }
        return false;
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }
 
}

五、MainActivity? ?

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends BaseActivity {
 
    String TAG  =  "MainActivity";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
        if (isNetwork(this)){
            Log.e(TAG,"有網");
            //請求
            //....
 
        }else {
            Log.e(TAG,"無網");
            //提示
            //....
        }
    }
}

到此這篇關于Android網絡監(jiān)聽和網絡判斷示例介紹的文章就介紹到這了,更多相關Android網絡監(jiān)聽和網絡判斷內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android實現(xiàn)省市區(qū)三級聯(lián)動

    Android實現(xiàn)省市區(qū)三級聯(lián)動

    這篇文章主要為大家詳細介紹了Android實現(xiàn)省市區(qū)三級聯(lián)動,Spinner實現(xiàn)省市區(qū)的三級聯(lián)動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • android水平循環(huán)滾動控件使用詳解

    android水平循環(huán)滾動控件使用詳解

    這篇文章主要為大家詳細介紹了android水平循環(huán)滾動控件的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • android 分辨率適配的方法

    android 分辨率適配的方法

    先和大家分享下,這個方法不能說萬能的,但是最起碼它解決了分辨率跟密集度的關系,但是也引來一個問題,就是布局會因為圖片資源小而失真,本文將詳細介紹android 分辨率適配的方法,需要的朋友可以參考下
    2012-11-11
  • Android中的AtomicLong原理、使用與實戰(zhàn)指南

    Android中的AtomicLong原理、使用與實戰(zhàn)指南

    本文詳細介紹了AtomicLong在Android多線程開發(fā)中的應用,包括其核心原理、基本使用、適用場景、生產環(huán)境實戰(zhàn)案例以及性能優(yōu)化建議,通過大量Kotlin代碼示例,幫助開發(fā)者更好地理解和使用AtomicLong,感興趣的朋友一起看看吧
    2025-03-03
  • Android整理好的圖片壓縮工具類

    Android整理好的圖片壓縮工具類

    今天小編就為大家分享一篇關于Android整理好的圖片壓縮工具類,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • android實現(xiàn)手機與單片機藍牙模塊通信

    android實現(xiàn)手機與單片機藍牙模塊通信

    這篇文章主要為大家詳細介紹了android實現(xiàn)手機與單片機藍牙模塊通信的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android UI控件RatingBar實現(xiàn)自定義星星評分效果

    Android UI控件RatingBar實現(xiàn)自定義星星評分效果

    這篇文章主要為大家詳細介紹了Android UI控件RatingBar實現(xiàn)自定義星星評分效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android異步上傳圖片到PHP服務器

    Android異步上傳圖片到PHP服務器

    這篇文章主要介紹了Android異步上傳圖片到PHP服務器的相關資料,需要的朋友可以參考下
    2015-12-12
  • 詳解Android全局異常的捕獲處理

    詳解Android全局異常的捕獲處理

    這篇文章主要為大家介紹了Android全局異常的捕獲處理,為什么要進行捕獲處理,如何進行捕獲處理,想要了解的朋友可以參考一下
    2016-01-01
  • Android 使用Vitamio打造自己的萬能播放器(5)——在線播放(播放優(yōu)酷視頻)

    Android 使用Vitamio打造自己的萬能播放器(5)——在線播放(播放優(yōu)酷視頻)

    本文主要介紹Android Vitamio的使用,這里給大家提供效果圖和代碼實例,來說明Vitamio組件播放網絡視頻,有需要的小伙伴可以參考下
    2016-07-07

最新評論

仙游县| 监利县| 景东| 望城县| 都安| 常山县| 西林县| 肇庆市| 仪陇县| 平乐县| 海安县| 元氏县| 澜沧| 云林县| 长宁县| 韶关市| 长春市| 阿合奇县| 都安| 岑溪市| 如皋市| 鹤庆县| 清流县| 宜兰市| 武陟县| 布尔津县| 于都县| 泽普县| 松溪县| 页游| 八宿县| 达拉特旗| 巩留县| 定陶县| 武威市| 收藏| 淮南市| 新闻| 古田县| 都江堰市| 靖州|