Android添加自定义广播事件(带多个参数)

来源:互联网 发布:mac获取最高权限 编辑:程序博客网 时间:2024/05/29 11:58
1. 发送进程或者服务:只需要发送事件,可以附带参数
1.1 定义事件名称:android.intent.action.ACTION_KEYBOARD_EVENT
1.2 在改进程/服务有需要发送该广播的地方
mContext.sendBroadcast(new Intent("android.intent.action.ACTION_KEYBOARD_EVENT"));
                String KEYBOARD_EVENT  = "android.intent.action.ACTION_KEYBOARD_EVENT";
                Intent myIntent = new Intent(KEYBOARD_EVENT);
                String DOWN;
                DOWN = (true == down) ? "1" : "0";
                myIntent.putExtra("KEYCODE", Integer.toString(KeyEvent.KEYCODE_SEARCH));
                //第一个参数,KEYCODE是索引字,用于接收解析用
                myIntent.putExtra("DOWN", DOWN);   //第二个参数,后面可以增加其他参数,DOWN是索引字
                mContext.sendBroadcast(myIntent); 

即可。

2. 接受进程或者服务:负责接收并做相应想要做的事情
2.1  该类里面定义 广播事件描述
private static final String KEYBOARD_EVENT  = "android.intent.action.ACTION_KEYBOARD_EVENT";
2.2  注册广播守候事件
在该类的构造函数或者onCreate函数里面执行下面注册过程,或者在有需要接收的时候才注册,反正就需要执行下面注册过程就行。
    IntentFilter filter = new IntentFilter();
    filter.addAction(KEYBOARD_EVENT);
    Log.d(TAG, "addAction and register: " + KEYBOARD_EVENT);
    this.registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (KEYBOARD_EVENT.equals(intent.getAction())) {
                Log.d(TAG, "I have receive: " + KEYBOARD_EVENT);
                String KEYCODE = intent.getExtras().getString("KEYCODE");
               //获取到当前是自己想要的广播后,通过索引字获取对应的值,如keycode
                String DOWN = intent.getExtras().getString("DOWN");  //同上
                Log.d(TAG, "I have receive : " + KEYBOARD_EVENT + "KEYCODE:" + KEYCODE + " isDown:" + DOWN);//使用这几个参数

            } else
            {
                //NO NOTHING
            }
        }
    }, filter);
2.3 该类包包含
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
原创粉丝点击