Android 安卓网络监听器
请帮忙解决这个问题。 任务:创建网络侦听器。当Internet丢失时,显示ProgressDialogAndroid 安卓网络监听器,android,networking,android-intent,broadcastreceiver,Android,Networking,Android Intent,Broadcastreceiver,请帮忙解决这个问题。 任务:创建网络侦听器。当Internet丢失时,显示ProgressDialog ProgressDialog dialog; private IntentFilter mNetworkStateChangedFilter; private BroadcastReceiver mNetworkStateIntentReceiver; @Override public void onCreate(Bundle savedInstanceState) {
ProgressDialog dialog;
private IntentFilter mNetworkStateChangedFilter;
private BroadcastReceiver mNetworkStateIntentReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNetworkStateChangedFilter = new IntentFilter();
mNetworkStateChangedFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
mNetworkStateIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
mTypeName = info.getTypeName();
mSubtypeName = info.getSubtypeName();
mAvailable = info.isAvailable();
Log.i(LOGTAG, "Network Type: " + mTypeName
+ ", subtype: " + mSubtypeName
+ ", available: " + mAvailable + " isConnected: " + info.isConnected());
if (!info.isConnected()){
try{
showDialog();
}catch (Exception e){
}
}
else if (info.isConnected()){
dismissDialog();
}
}
}
};
setContentView(R.layout.activity_main);
}
检查模拟器。我进入设置(暂停操作),拔下互联网,返回(恢复)-创建对话,没关系。再次在设置中,打开互联网,对话仍然存在
@Override
protected void onPause() {
Log.d(LOGTAG, "onPause");
super.onPause();
unregisterReceiver(mNetworkStateIntentReceiver);
};
@Override
protected void onResume() {
Log.d(LOGTAG, "onResume");
super.onResume();
registerReceiver(mNetworkStateIntentReceiver, mNetworkStateChangedFilter);
unregisterReceiver(mNetworkStateIntentReceiver);
registerReceiver(mNetworkStateIntentReceiver, mNetworkStateChangedFilter);
};
public void showDialog() {
dialog = ProgressDialog.show(this, "", "");
}
public void dismissDialog() {
try {
dialog.dismiss();
} catch (Exception e) {
Log.i(LOGTAG, e.getMessage()); //Crash application
}
}
尝试调试失败<代码>Log.i(LOGTAG,e.getMessage())导致应用程序崩溃
java.lang.RuntimeException:在com.t.network.MainActivity中接收广播意图{act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000000(具有额外功能)}时出错$1@40519848
原因:java.lang.NullPointerException:println需要一条消息 如何使用Progress/Allert对话框收听连接 谢谢 附言 正常工作
p.p.S.我为我的英语道歉:)“原因:java.lang.NullPointerException:println需要一条消息”->尝试使用e.printStackTrace()而不是e.getMessage(),您尝试的是
字符串err=(e.getMessage()==null)?“错误测试错误”:e.getMessage();Log.e(LOGTAG,err)代码>?对话框未关闭public void showDialog(){dialog=new ProgressDialog(this);dialog.setMessage(“message”);dialog.setCancelable(false);dialog.show();}public void dismissDialog(){try{if(dialog!=null){dialog.dismise();dialog=null;}}catch(异常e){e.printStackTrace();}
-无错误。但对话打开了…问题解决了<代码>公共无效dismissDialog(){try{if(dialog!=null){dialog.dismise();dialog=null;}}}捕获(异常e){e.printStackTrace();}}
并在showDialog()、onPause()和onResume()方法中调用dismissDialog()。谢谢大家
Log.i(LOGTAG, "Network Type: " + mTypeName
+ ", subtype: " + mSubtypeName
+ ", available: " + mAvailable + " isConnected: " + info.isConnected());