我正在使用 BroadcastReceiver 在我的应用程序运行时检查网络连接。我已将 BroadcastReceiver 与 Activity 绑定,以便在连接中断时带来一些控件,如 AlertDialog。但现在我不想将此接收器限制为特定活动,而是希望将其应用于我的整个应用程序(所有活动)。那么我应该采取什么方式来完成这项工作......
这是我使用的代码。请让我知道我的代码是否达到标准,如果出现错误请纠正我。
package com.xx.mobile;
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.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class CheckforConnectivity extends Activity {
private static final String LOG_TAG = CheckforConnectivity.class.getSimpleName();
static final String ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private boolean mActiveNetState = false;
private boolean mMobileNetState = false;
private boolean mStatus = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter(ACTION);
this.registerReceiver(ConnectivityCheckReceiver, filter);
}
@Override
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(ConnectivityCheckReceiver);
}
private final BroadcastReceiver mConnectivityCheckReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
Log.i(TAG, "Status : " + noConnectivity + ", Reason :" + reason + ", FailOver :" + isFailover + ", Current Network Info : " + currentNetworkInfo + ", OtherNetwork Info :" + otherNetworkInfo);
mStatus = noConnectivity;
Log.d(TAG, "Status :" + mStatus);
if(mStatus){
AlertDialog.Builder builder = new AlertDialog.Builder(NotifySMSReceived.this);
builder.setMessage("Connection is not Available !");
builder.setTitle("Info");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
else {
AlertDialog.Builder builder = new AlertDialog.Builder(NotifySMSReceived.this);
builder.setMessage("Connection is Available !");
builder.setTitle("Info");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
};
}
任何形式的帮助都将受到高度赞赏。
谢谢