我們的應(yīng)用有時(shí)候需要檢測(cè)網(wǎng)絡(luò)斷開斯碌,并且給用戶友好的提示。根據(jù)需求鹿响,我們覺得利用Android系統(tǒng)廣播羡微,當(dāng)我們收到斷開網(wǎng)絡(luò)的時(shí)候,我們彈出一個(gè)Dialog惶我。這個(gè)時(shí)候我們需要新建一個(gè)BaseActivity妈倔。
package com.wj.networkcheckdemo.base;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.wj.networkcheckdemo.R;
import com.wj.networkcheckdemo.bean.ActivityController;
public class BaseActivity extends AppCompatActivity {
private NetWorkChangeBroadcastReceiver myReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
ActivityController.setCurrentActivity(this);
myReceiver = new NetWorkChangeBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(myReceiver, filter);
}
class NetWorkChangeBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo[] networkInfos = connectivityManager.getAllNetworkInfo();
for (int i = 0; i < networkInfos.length; i++) {
NetworkInfo.State state = networkInfos[i].getState();
if (NetworkInfo.State.CONNECTED == state) {
//有網(wǎng)絡(luò),直接跳出該方法
return;
}
}
}
final Activity activity = ActivityController.getCurrentActivity();//Dialog依托于Activity。所以該方法用戶存儲(chǔ)唯一可視的Activity
if (activity != null) {
showDialog(activity);
}
}
}
public void showDialog(Context context) {
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle("提示")
.setMessage("您已經(jīng)斷網(wǎng)了,是否重新連接")
.setCancelable(false)
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.create().show();
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myReceiver);
}
}
我們知道Dialog是依托在Activity之上的绸贡。所以我們保存了一個(gè)Activity對(duì)象盯蝴。
最后別忘記添加兩個(gè)重要的權(quán)限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />