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

首頁 > 系統 > Android > 正文

Android使用BroadcastReceiver監聽網絡連接狀態的改變

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

只需要實現下面2段代碼即可實現對網絡連接狀態的監聽,千萬別忘了在Manifest.xml里面添加網絡訪問權限哦。 

1、定義廣播接收器 

NetState.java

package huaxa.it.map.net;import huaxa.it.map.demo.MapDemo;import com.baidu.mapapi.map.MapView;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.NetworkInfo.State;import android.net.wifi.WifiInfo;import android.util.Log;import android.widget.Toast;/** * @項目名: ZhiHUIGuangDong * @包名: huaxa.it.zhihuiguangdong * @類名: NetState * @創建者: 黃夏蓮 * @創建時間: 2016年10月22日 ,上午1:10:16 *  * @描述: TODO */public class NetState extends BroadcastReceiver{ public int flag = 0; private int flag1=0; @Override public void onReceive(Context context, Intent arg1) {  ConnectivityManager manager = (ConnectivityManager) context    .getSystemService(Context.CONNECTIVITY_SERVICE);  NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();  if (activeNetworkInfo == null)  {   Toast.makeText(context, "當前無網絡,請檢查移動設備的網絡連接", Toast.LENGTH_SHORT)     .show();   flag = 1;   flag1 = 1;   Log.i("TAG","網絡未連接+flag+"+flag);  }  // activeNetworkInfo.getTypeName(); 以何種方式連線  // :cmwap/cmnet/wifi/uniwap/uninet  // activeNetworkInfo.isAvailable(); 當前網絡是否可用(true)  // activeNetworkInfo.isFailover();網絡有問題  else  {   if (!activeNetworkInfo.isAvailable()     || activeNetworkInfo.isFailover())   {    Toast.makeText(context, "當前網絡不可用", Toast.LENGTH_SHORT).show();    flag = 1;    flag1=2;    Log.i("TAG","當前網絡不可用flag+"+flag);   }   if (flag == 1)   {    if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE)    {     Toast.makeText(context, "已連接上移動數據", Toast.LENGTH_SHORT)       .show();    } else    {     Toast.makeText(context, "已連接上WIFI數據", Toast.LENGTH_SHORT)       .show();    }    Log.i("TAG","網絡ok,flag+"+flag+"....."+flag1);   }  } }}

2、注冊Broadcast Receiver 

在Activity中加入:

NetState receiver = new NetState();IntentFilter filter = new IntentFilter();filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);this.registerReceiver(receiver, filter);//注冊receiver.onReceive(this, null);//接收

Broadcast Receiver知識點 

每收到一次消息時便調用onReceive(Context context,Intent intent)對其處理。 

Intent可以傳遞數據實現自定義廣播事件,然后通過sendBroadcast(intent)發送出去。通過onReceive()方法處理接收的這個的數據。

String Action = "xxxxxx";//xxxxxx指的是自定義的Broadcast的action屬性,如com.annyAndroid.broadcastdemo.action.USER_BROADCAST,隨便定義,但是在廣播接收器的intentfilter中的action屬性必須和這個一致Intent intent = new Intent();intent.putExtra("user","huaxa");//key-ValuesendBroadcast(intent);

注意:如果在onReceive()方法中的代碼執行時間超過5s的話,Android會ANR。 

1、使用廣播接收器

public class AAAAA extends Broadcast Receiver{ @Override onReceive(Context context,Intent intent){ //處理廣播事件 ...... }}

2、注冊Broadcast Receiver(2種方法) 

1)、在Manifest.xml里面:

<receiver android:name=".MyReceiver">    <intent-filter>     <action android:name="xxxxxxxx"/>    <!--xxxxx廣播事件的Action屬性 -->   </intent-filter> </receiver> 

2、在Activity中onCreate()用Java代碼實現

IntentFilter filter = new IntentFilter(xxxx);//添加事件的ACTION,如電池電量、網絡連接變化、有來電、短信息等AAAAA aAAAA = new AAAAA();registerReceiver(aAAAA,filter);//注冊

3)、在適當時取消注冊Receiver,可以在程序中取消,在onDestroy()中調用如下函數即可:

if (connectionReceiver != null) { unregisterReceiver(connectionReceiver); }

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平度市| 望城县| 报价| 明溪县| 泸水县| 彭山县| 澄城县| 盘锦市| 灵石县| 板桥市| 崇礼县| 徐州市| 德兴市| 英吉沙县| 苏尼特左旗| 长垣县| 聊城市| 霍邱县| 邵武市| 塔河县| 万宁市| 二连浩特市| 大悟县| 金塔县| 中牟县| 合阳县| 东乌珠穆沁旗| 磐石市| 辉南县| 襄垣县| 乌拉特后旗| 库伦旗| 武强县| 剑阁县| 阳信县| 蓝田县| 扎兰屯市| 广昌县| 五河县| 孟州市| 文化|