Android中如何将BroadcastReceiver中的数据传递给activity

来源:互联网 发布:数据库管理系统DBMSS 编辑:程序博客网 时间:2024/05/18 11:42

原理:用接口回调。定义一个接口 让 Activity实现这个接口,然后广播接受者调用接口里面的方法把要传递的参数传进去。

1、广播接收者

public class WifiInfoReceiver extends BroadcastReceiver{    private ScanEnd scanEnd;    public static final int SCAN_END_TAG=0;    public static final int SCAN_FAIL_TAG=-1;    @Override    public void onReceive(Context context, Intent intent) {        if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){            //  WIFI扫描结束            scanEnd.scanEnd(SCAN_END_TAG);        }else {            scanEnd.scanEnd(SCAN_FAIL_TAG);        }    }    public interface ScanEnd {        public void scanEnd(int tag);    }    public void scanEndListen(ScanEnd scanEnd) {        this.scanEnd = scanEnd;    }}

2、Activity中接收数据

public class LineActivity extends BaseActivity implements WifiInfoReceiver.ScanEnd{    private static final String TAG = "LineActivity";        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_line);        initView();    }    private void initView() {        IntentFilter intentFilter = new IntentFilter();        intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);        WifiInfoReceiver receiver = new WifiInfoReceiver();        registerReceiver(receiver, intentFilter);        receiver.scanEndListen(this);               WifiManage.getIntance(this).startScan();    }    @Override    public void scanEnd(int tag) {        if (tag==WifiInfoReceiver.SCAN_END_TAG){            Log.i(TAG, "scanEnd: success");//扫描完成        }else {            Log.i(TAG, "scanEnd: fail");//扫描失败        }    }}


0 0