问题描述:假设两个应用A和B,A中发送某广播,B中接收。A、B都安装到了系统中,即只讨论双开模式。那下面有如下问题, 1. 如果A安装到了VA中,B没有,那么运行A发送广播,B是否应该收到? 2. 如果A、B都安装到了VA中。运行A,那么应该是系统B收到还是VA里的B收到,还是都收到? 目前VA Master分支最新代码,这两种下B(无论是否安装到VA中)都不能收到A发送的广播。 对比平行空间: 1. 系统中B能收到广播 2. 平行空间中的B收到平行空间中A发送的广播。 因为VA还支持插件模式,这个问题就变的比较复杂。
Activity
prife commentedon Aug 24, 2016
设计了如下demo,应用A按下按钮发送广播(携带一段字符串),应用B静态注册广播,在onReceive函数中启动一个Activity并把广播中的字符串显示在TextView控件上。
应用A代码
一个helleworld应用,有个button,按下button时,即发送。
应用B代码
广播接收应用B,当收到广播(action为
prife.test),则启动一个Activity(ReceiveBroadCast.java),并讲Intent中携带的字符串显示出来,主要代码如下。AndroidManifest.xml
Receiver.java
ReceiveBroadCast.java
cddjr commentedon Nov 10, 2016
其实只要在广播前先判断接收器是否已经在VA中注册,如果没有注册那么广播不做任何修改直接传给系统,这样就实现了场景1。