簡體   English   中英

如何將廣播意圖從BroadcastReceiver轉發到應用程序的活動(將廣播意圖轉換為顯式意圖)

[英]How to forward broadcast Intent from BroadcastReceiver to app's activity (Convert broadcast intent to explicit intent)

我想捕獲一個廣播意圖,然后將該意圖的詳細信息轉發到我的應用程序中的特定活動。

所以在清單文件中,我有這個:

<receiver android:name="uk.floriansystems.carplayer.MediaButtonReceiver">
    <intent-filter android:priority="999">
        <action android:name="android.intent.action.MEDIA_BUTTON"></action>
    </intent-filter>
</receiver>

BroadcastReceiver是這樣的:

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。

有沒有一種方法可以重用或克隆原始廣播意圖, 並在將其發送到活動之前對其進行盡可能小的修改? 還是有類似的替代方法來將信息傳遞給活動的整潔/良好實踐方法?

我真正想做的是最大程度地提高靈活性,例如,如果滿足以下任一條件,則(IMO)不好:

  1. 我為調用活動創建的意圖僅與活動兼容
  2. 活動中用於處理意圖的代碼僅與我的BroadcastReceiver創建的意圖兼容

我是否應該僅將行動,類別,數據和其他內容從第一個意圖復制到第二個意圖? 還有其他我可以/應該復制的地方嗎?

嘗試使用復制構造函數:

Intent activityIntent = new Intent(intent);
activityIntent.setClass(context, MainActivity.class);
context.startActivity(activityIntent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM