導航:首頁 > APP軟體 > 安卓廣播監聽網路

安卓廣播監聽網路

發布時間:2023-07-12 04:57:53

① Android使用廣播監聽網路狀態變化 一直收到系統廣播

因為這個系統廣播在不停的發送,系統網路狀態在不停的變化。比如關閉,打開,掃描,正在連接,已連接等狀態。

② android開發怎麼監聽網路請求

Android中網路情況時有變化,比如從有網到沒網,從wifi到gprs,gprs又從cmwap到cmnet...等等!
如果你的程序有些功能是需要網路支持的,有時候就需要監聽到網路的變化情況進行相應的處理。
比如說下載一個文件,如果突然斷網了,怎麼處理?網路又恢復了,如何監聽到並重連?

當網路變化的時候系統會發出義個廣播broadcast,只要在程序中注冊一個廣播接收器BroadcastReceiver,並在IntentFilter中添加相應的過濾,這樣一旦網路有變化,程序就能監聽到
public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private void registerDateTransReceiver() {
Log.i(TAG, "register receiver " + CONNECTIVITY_CHANGE_ACTION);
IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_CHANGE_ACTION);
filter.setPriority(1000);
registerReceiver(new MyReceiver(), filter);
}

在MyReceiver中:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "PfDataTransReceiver receive action " + action);
if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){//網路變化的時候會發送通知
Log.i(TAG, "網路變化了");
return;
}
}

當網路變化時,從有網到沒網也會發廣播,就舉的例子來說,如果下載時斷網了,接收到廣播的時候要判斷當前網路是可用還是不可用狀態,如果可用進行什麼操作;不可用進行什麼操作:
public static NetworkInfo getActiveNetwork(Context context){
if (context == null)
return null;
ConnectivityManager mConnMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (mConnMgr == null)
return null;
NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); // 獲取活動網路連接信息
return aActiveInfo;
}

這個方法返回的aActiveInfo可以判斷網路的有無,如果返回的是null,這時候是斷網了,如果返回對象不為空,則是連上了網。在返回的NetworkInfo對象里,可以有對象的方法獲取更多的當前網路信息,比如是wifi還是cmwap等,就不多說了。

③ android中如何用廣播監聽網路變化,將其顯示在通知欄上

網路狀態發生變化的時候,系統會發出 android.net.conn.CONNECTIVITY_CHANGE .
下面是實現的 demo :

package mark.zhang;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.IBinder;
import android.util.Log;

public class ListenNetStateService extends Service {
private ConnectivityManager connectivityManager;
private NetworkInfo info;

private BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
Log.d("mark", "網路狀態已經改變");
connectivityManager = (ConnectivityManager)

getSystemService(Context.CONNECTIVITY_SERVICE);
info = connectivityManager.getActiveNetworkInfo();
if(info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.d("mark", "當前網路名稱:" + name);
} else {
Log.d("mark", "沒有可用網路");
}
}
}
};

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
super.onCreate();
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mReceiver, mFilter);
}

@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
}

閱讀全文

與安卓廣播監聽網路相關的資料

熱點內容
編程時在什麼情況下有include 瀏覽:849
extjs復制對象 瀏覽:84
lumion7燈光教程 瀏覽:300
如何設計word背景 瀏覽:669
wcf怎麼接受post資料庫 瀏覽:243
會計借貸賬目表怎麼看數據 瀏覽:728
java強制下線 瀏覽:376
iphone6拆機更換電池教程視頻 瀏覽:294
msvcr110dll程序入口點 瀏覽:455
電腦桌面文件夾懸浮設置 瀏覽:50
窗體文件名是啥 瀏覽:59
新浪微博總是網路異常 瀏覽:571
185熱血終極版本合擊 瀏覽:532
2個不一樣的文件怎麼內容一樣了 瀏覽:224
wps壓縮pdf文件 瀏覽:695
腦電設備數據如何讀取 瀏覽:685
java在線查看pdf 瀏覽:564
成人學什麼編程 瀏覽:123
安卓病毒特性 瀏覽:186
咸魚app為什麼登錄不了 瀏覽:857

友情鏈接