国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android仿QQ微信實時監測網絡狀態

2019-10-22 18:10:27
字體:
來源:轉載
供稿:網友

先簡單說一下思路:網絡變化時系統會發出廣播。所以我們監聽這個廣播,利用接口回調通知activity做相應的操作就好了。

思路

  • 判斷網絡狀態(寫個工具類NetUtil)
  • 寫個類繼承BroadcastReceiver(不要忘記在清單文件中注冊)
  • 需要在清單文件中添加權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  • 回調接口(NetEvevt)
  • BaseActivity實現這個接口

直接上代碼

NetUtil

import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo;  /**  * Author: lenovo  * Date: 2018/2/26  * email: 1271396448@qq.com  */  public class NetUtil {    /**   * 沒有連接網絡   */  public static final int NETWORK_NONE = -1;  /**   * 移動網絡   */  public static final int NETWORK_MOBILE = 0;  /**   * 無線網絡   */  public static final int NETWORK_WIFI = 1;   public static int getNetWorkState(Context context) {    // 得到連接管理器對象   ConnectivityManager connectivityManager = (ConnectivityManager) context     .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo activeNetworkInfo = connectivityManager     .getActiveNetworkInfo();   if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {    if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {     return NETWORK_WIFI;    } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {     return NETWORK_MOBILE;    }   } else {    return NETWORK_NONE;   }   return NETWORK_NONE;  }  } 

NetBroadReceiver

import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager;  /**  * Author: lenovo  * Date: 2018/2/26  * email: 1271396448@qq.com  */  public class NetBroadcastReceiver extends BroadcastReceiver {  public NetEvevt evevt = BaseActivity.evevt;   @Override  public void onReceive(Context context, Intent intent) {   // TODO Auto-generated method stub   // 如果相等的話就說明網絡狀態發生了變化   if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {    int netWorkState = NetUtil.getNetWorkState(context);    // 接口回調傳過去狀態的類型    evevt.onNetChange(netWorkState);   }  }   // 自定義接口  public interface NetEvevt {   public void onNetChange(int netMobile);  } } 

BaseActivity

import android.os.Bundle; import android.support.v4.app.FragmentActivity;  /**  * Author: lenovo  * Date: 2018/2/26  * email: 1271396448@qq.com  */  abstract public class BaseActivity extends FragmentActivity implements NetBroadcastReceiver.NetEvevt {   public static NetBroadcastReceiver.NetEvevt evevt;  /**   * 網絡類型   */  private int netMobile;   @Override  protected void onCreate(Bundle arg0) {   // TODO Auto-generated method stub   super.onCreate(arg0);   evevt = this;   inspectNet();  }    /**   * 初始化時判斷有沒有網絡   */   public boolean inspectNet() {   this.netMobile = NetUtil.getNetWorkState(BaseActivity.this);   return isNetConnect();    // if (netMobile == 1) {   // System.out.println("inspectNet:連接wifi");   // } else if (netMobile == 0) {   // System.out.println("inspectNet:連接移動數據");   // } else if (netMobile == -1) {   // System.out.println("inspectNet:當前沒有網絡");   //   // }  }   /**   * 網絡變化之后的類型   */  @Override  public void onNetChange(int netMobile) {   // TODO Auto-generated method stub   this.netMobile = netMobile;   isNetConnect();   }   /**   * 判斷有無網絡 。   *   * @return true 有網, false 沒有網絡.   */  public boolean isNetConnect() {   if (netMobile == 1) {    return true;   } else if (netMobile == 0) {    return true;   } else if (netMobile == -1) {    return false;    }   return false;  }  } 

MainActivity

import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.TextView;  public class MainActivity extends BaseActivity {   private TextView textView,txtView;  ListView listView; //聲明一個ListView對象   @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   textView= (TextView) findViewById(R.id.textView);   txtView=(TextView)this.findViewById(R.id.txtView);     //啟動時判斷網絡狀態   boolean netConnect = this.isNetConnect();   if (netConnect){    textView.setVisibility(View.GONE);    txtView.setText("網絡連接正常");   }else {    textView.setVisibility(View.VISIBLE);    txtView.setText("網絡連接異常");   }  }   @Override  public void onNetChange(int netMobile) {   super.onNetChange(netMobile);   //網絡狀態變化時的操作   if (netMobile==NetUtil.NETWORK_NONE){    textView.setVisibility(View.VISIBLE);    txtView.setText("網絡連接異常");   }else {    textView.setVisibility(View.GONE);    txtView.setText("網絡連接正常");   }  }  } 

記得在清單文件中注冊

<receiver android:name="cn.broadcastreceiver.NetBroadcastReceiver" >  <intent-filter>   <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  </intent-filter> </receiver> 

Android,QQ,微信,網絡狀態

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昔阳县| 陕西省| 大竹县| 宁陕县| 香港 | 托克托县| 玉门市| 象山县| 双桥区| 阿图什市| 深泽县| 原阳县| 岳阳县| 资中县| 若尔盖县| 赤峰市| 永宁县| 株洲县| 新昌县| 二连浩特市| 新乐市| 余江县| 繁昌县| 同德县| 集安市| 屯昌县| 浠水县| 义乌市| 宁乡县| 娄底市| 绥宁县| 新化县| 绍兴县| 邯郸县| 江津市| 贡山| 黑龙江省| 中阳县| 晋城| 佳木斯市| 思南县|