我希望实时显示网络状态
例如:最近网络状态是以太网连接,我想显示以太网图像。 屏幕不会更改,如果网络连接已更改,则应更改。
我认为创建接收器类。但是改变网络,app就停止了。
MainActivity
public class MainActivity extends ActionBarActivity {
ImageView ethernet;
ImageView unableNetwork;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ethernet = (ImageView) findViewById(R.id.imageView2);
unableNetwork = (ImageView) findViewById(R.id.imageView1);
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
int m_iNetworkType = (activeNetwork == null) ? -1 : activeNetwork.getType();
if (m_iNetworkType == cm.TYPE_WIFI) {
ethernet.setVisibility(View.INVISIBLE);
unableNetwork.setVisibility(View.INVISIBLE);
} else if (m_iNetworkType == cm.TYPE_ETHERNET) {
ethernet.setVisibility(View.VISIBLE);
unableNetwork.setVisibility(View.INVISIBLE);
} else { //error
ethernet.setVisibility(View.INVISIBLE);
unableNetwork.setVisibility(View.VISIBLE);
}
}
@Override
protected void onResume(){
super.onResume();
ethernet = (ImageView) findViewById(R.id.imageView2);
unableNetwork = (ImageView) findViewById(R.id.imageView1);
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
int m_iNetworkType = (activeNetwork == null) ? -1 : activeNetwork.getType();
if (m_iNetworkType == cm.TYPE_WIFI) {
ethernet.setVisibility(View.INVISIBLE);
unableNetwork.setVisibility(View.INVISIBLE);
} else if (m_iNetworkType == cm.TYPE_ETHERNET) {
ethernet.setVisibility(View.VISIBLE);
unableNetwork.setVisibility(View.INVISIBLE);
} else {
ethernet.setVisibility(View.INVISIBLE);
unableNetwork.setVisibility(View.VISIBLE);
}
}
}
ChangeReceiver.class
public class ChangeReceiver extends BroadcastReceiver {
ImageView ethernet;
ImageView unableNetwork;
View v;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
ethernet = (ImageView) v.findViewById(R.id.imageView2); //error
unableNetwork = (ImageView) v.findViewById(R.id.imageView1);
int m_iNetworkType = (activeNetwork == null) ? -1 : activeNetwork.getType();
if (m_iNetworkType == cm.TYPE_WIFI) {
ethernet.setVisibility(View.INVISIBLE);
unableNetwork.setVisibility(View.INVISIBLE);
} else if (m_iNetworkType == cm.TYPE_ETHERNET) {
ethernet.setVisibility(View.VISIBLE);
unableNetwork.setVisibility(View.INVISIBLE);
} else { //error
ethernet.setVisibility(View.INVISIBLE);
unableNetwork.setVisibility(View.VISIBLE);
}
}
}
答案 0 :(得分:0)
崩溃是因为没有创建视图,请尝试:
CountOfVariances
如果您希望自己可以使用线程,以获得更高的性能:
public class ChangeReceiver extends BroadcastReceiver{
ImageView ethernet;
ImageView unableNetwork;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
View v = ((Activity) context);
ethernet = (ImageView) v.findViewById(R.id.imageView2); //error
unableNetwork = (ImageView) v.findViewById(R.id.imageView1);
int m_iNetworkType = (activeNetwork == null) ? -1 : activeNetwork.getType();
.....
我希望我有所帮助,对不起我的英语不好。