Broadcast静态注册 个人总结

来源:互联网 发布:淘宝上新产品如何运营 编辑:程序博客网 时间:2024/05/21 09:08

思考步骤:

广播接收器-----broadcastReceiver

用途:

1,开机广播,2,网络改变,3,电量广播

为何需要广播?

减少工作周期和工作量。。。。

,广播步骤:

1,发送,2,接收

在发送出

一:静态注册:

在manifest.xml中进行注册


<receiver 
    android:name="com.example.boradcast.b
roadcastReceiver">----------------------<!-----你的继承BroadcastReceiver的文件位置------>

    <intent-filter>-------------------------/#####过滤器,action中是什么,在mainActivity中的setAction就是什么##########/
     
             <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        
</intent-filter>
    </receiver>


二,在mainActivity中进行发送广播

声明变量

Button send,stop;
EditText content;
Context context;
private static final String STATICACTION = "android.provider.Telephony.SMS_RECEIVED";//静态广播的Action字符串

/******************************************************************************/

Intent intent=new Intent();                                                              ******************
//静态注册中限制什么,setAction中的内容就是什么******************
intent.setAction(STATICACTION);                                  将EditText 输入的数据发送出去
String write=content.getText().toString().trim();**********************************
intent.putExtra("发送", write);
MainActivity.this.sendBroadcast(intent);                                      ************

/******************************************************************************/

三,在broadcastReceiver类中onReceive进行接收广播


public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String msg=intent.getStringExtra("发送");
System.out.println("dddddddddddddddddddd"+msg);//在打印器中进行显示接收到的msg
}




@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

动态注册及发送广播----------一般情况,如果在代码中注册(动态注册广播)就把继承BroadcastReceiver写成内部类,在MainActivity中显示,如果,静态显示,则单独写一个类。

Intent intent=new Intent();
intent.setAction(STATICACTION);//此行不能少
intent.putExtra("ddddd", "eewwww");
inFilter=new IntentFilter();
inFilter.addAction(STATICACTION);
receiver=new Broadcast_three();
registerReceiver(receiver, inFilter);

sendBroadcast(intent);


下文中,是动态注册广播,却是单独写的类,所以,必须要有receiver.onReceiver(MainActivity.this,intent)。

case R.id.bt_Send:
inFilter=new IntentFilter();
inFilter.addAction(STATICACTION);
receiver=new Broadcast_two();
Intent intent=new Intent();
intent.putExtra("ddddd", "eewwww");
receiver.onReceive(MainActivity.this, intent);

sendBroadcast(intent);


break;


1 0