我想捕捉广播意图,然后将意图的详细信息转发到我的应用程序中的特定活动。
所以在我的清单文件中,我有这个:
<receiver android:name="uk.floriansystems.carplayer.MediaButtonReceiver">
<intent-filter android:priority="999">
<action android:name="android.intent.action.MEDIA_BUTTON"></action>
</intent-filter>
</receiver>
广播接收器是这样的:
public class MediaButtonReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
KeyEvent keyEvent = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
int keyEventKeyCode = keyEvent.getKeyCode();
int keyEventAction = keyEvent.getAction();
// I want to pass the above integers to my Activity, within the Intent
// created below, in a tidy way:
context.startActivity(new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}
我希望活动通过显式调用活动的意图接收 keyEvent 的操作和 keyCode。
有没有办法可以重用或克隆原始广播意图,在将其发送到 Activity 之前尽可能少地对其进行修改?或者是否有类似的替代方法可以将信息传递给活动的整洁/良好实践方式?
我真正想做的是最大限度地提高灵活性,例如,如果以下任何一种情况(IMO)都不好:
- 我为调用 Activity 而创建的 Intent 仅与 Activity 兼容
- Activity 中处理 Intent 的代码只与我的 BroadcastReceiver 创建的 Intent 兼容
我是否应该将动作、类别、数据和附加内容从第一个意图复制到第二个意图?还有其他我可以/应该复制的内容吗?