Broadcast-广播的接收
至于广播的意思,不再赘述,直接看它的使用
先看代码
package com.example.test1123; import android.annotation.SuppressLint; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { TextView tv; Button bt1; Button bt2; Button bt3; int i = 0; MyBroadReceive myBroadReceive; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.tv); bt1 = (Button) findViewById(R.id.bt1); bt2 = (Button) findViewById(R.id.bt2); bt3 = (Button) findViewById(R.id.bt3); myBroadReceive = new MyBroadReceive(); bt1.setOnClickListener(this); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.bt1: IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); registerReceiver(myBroadReceive, intentFilter); break;
case R.id.bt2:
unregisterReceiver(myBroadReceive); default: break; } } public class MyBroadReceive extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1) { tv.setText("click"+i); i++; } }
里面其实就三处关键代码
一个就是定义广播接收者:
继承自
MyBroadReceive extends BroadcastReceiver
接收以后处理,实现
onReceive
另外一个就是注册广播接收
这个也是包括两个
一个就是确定你要接收广播代号(这个其实就是发送者唯一标签,类似波长)
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
另外一个就是绑定这个标签跟你定义的接收处理动作
registerReceiver(myBroadReceive, intentFilter);
最后就是广播注销,也就是不再接收广播
nregisterReceiver(myBroadReceive);
当我完成了以上步骤以后,发现还是没有作用,原来还需要最后一步,就是授权了。就像你不能无缘无故就接受到所有的广播一样。授权就在AndroidManifest.xml中添加如下
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这样就行了。当手机网络发生变化的时候,我们就可以接收到信息了