BroadcastReceiver的两种注册方法
/* 1.静态注册先在androidanifest receiver里面注册reiver
   2.在intent事先写入启动广播Intent intent=new Intent(MainActivity.this, MyReceiver.class); 
   3.广播信息,intent.putExtra("name","hello"); 
   4.sendBroadcast(intent)启动广播 */
    public class MainActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
    
          findViewById(R.id.btnsendbroad).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                
                Intent intent=new Intent(MainActivity.this, MyReceiver.class);
                intent.putExtra("name", "linhong");                
                sendBroadcast(intent);
                //静态注册,androidanifest receiver
       }
        });
    }
    
}
声明一个类继承BroadcastReceiver,在重写onReceiver()方法
/*  1. 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件。  
    2. 所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。         
       所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。 */
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
    public static final String action="com.example.broadcast.intent.action.MyReceiver";  //action定义:"包名.intent.action.name";name随便
      public void onReceive(Context context, Intent intent) {
        
        System.out.println("onReceive..."+intent.getStringExtra("name"));
    }
}
//动态注册广播
registerReceiver(BroadcastReceiver receiver, IntentFilterfilter)
第一个参数是我们要处理广播的BroadcastReceiver (广播接收者,可以是系统的,也可以是自定义的),第二个参数是意图过滤器。
 public class MainActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);   
        findViewById(R.id.btnRegisterbroadcast).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                
                registerReceiver(receiver, new IntentFilter(MyReceiver.action));//注册到那个广播
            }
        });
        findViewById(R.id.btnunRegisterbroadcast).setOnClickListener(new OnClickListener() {
    
            public void onClick(View v) {
                
                unregisterReceiver(receiver);//注销广播               }
        });
        
        findViewById(R.id.btnsendbroad).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                
                Intent intent=new Intent(MyReceiver.action);
                intent.putExtra("name", "linhong_hello world");
                sendBroadcast(intent);
                /*
                 * 当动态创建时候,点击这个按钮没反应,因为
                 * 没有注册到androidmainfest,要动态注册
                 * registerReceiver注册到那个receiver上
                 * 点击Register broadcast,在点击send broacast才能发送
                 * 点击unRegister注销 broadcast,在点击send broadcast不能发送
                 */
                
            }
        });
    }
 public    final MyReceiver receiver=new MyReceiver(); //dynamic register
    
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号