国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新丰县| 惠来县| 宁都县| 扎囊县| 青阳县| 丰顺县| 湛江市| 铁岭市| 自贡市| 涟水县| 新津县| 饶河县| 桃源县| 阳谷县| 巫山县| 靖西县| 萨迦县| 灵台县| 崇信县| 耿马| 称多县| 蕉岭县| 塔河县| 察雅县| 夏邑县| 秦皇岛市| 松溪县| 亚东县| 三都| 通化市| 兴宁市| 双流县| 神农架林区| 曲麻莱县| 玛多县| 周口市| 贵州省| 阿城市| 永福县| 博湖县| 新巴尔虎左旗|