我正在尝试在我的 Android 应用程序中使用sendOrderedBroadcast 。
我希望能够将 Intent 从我的一个应用程序发送到另一个应用程序,然后我想从接收 Intent 的应用程序中取回数据,在本例中为布尔值 true 或 false。
这是当前代码:
Intent i = new Intent();
i.setAction(GlobalData.PROPOSE_IN_DOMAIN_ROAM_INTENT);
i.putExtra("com.testnetworks.QCLEVEL", aProposedTheoreticalQoSLevel);
sendOrderedBroadcast(i, null, null, null, Activity.RESULT_OK, null, null);
这是实现我想要的正确方法吗?
如果是这样,我将使用什么作为 resultReceiver* 参数?(第三个参数)
然后我如何从广播中接收数据?
我做了一个快速的谷歌并没有提出任何示例,非常感谢任何帮助或示例。
更新代码:
sendOrderedBroadcast(i, null, domainBroadcast, null, Activity.RESULT_OK, null, null);
class DomainBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent intent) {
String action = intent.getAction();
if(GlobalData.PROPOSE_IN_DOMAIN_ROAM_INTENT.equals(action)){
Log.d("BROADCAST", "Returning broadcast");
Bundle b = intent.getExtras();
Log.d("BROADCAST", "Returning broadcast " +
b.getInt("com.testnetworks.INT_TEST"));
}
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(GlobalData.PROPOSE_IN_DOMAIN_ROAM_INTENT.equals(action)){
Bundle b = intent.getExtras();
int testQCLevel = b.getInt("com.testnetworks.QCLEVEL");
switch(testQCLevel){
case 1:
Log.d("QCLevel ", "QCLevel = UNAVAILABLE");
break;
case 2:
Log.d("QCLevel ", "QCLevel = BELOWUSABILITY");
break;
case 3:
Log.d("QCLevel ", "QCLevel = VOICE");
break;
}
intent.putExtra("com.testnetworks.INT_TEST", 100);
}
因此,根据文档,我应该在我的 DomainBroadcast 接收器中收到 100,但它总是返回为 0。
谁能明白为什么?
**resultReceiver - 您自己的 BroadcastReceiver 被视为广播的最终接收者。*