如何将值从 BroadcastReceiver 传递到 main activity

How to pass value from BroadcastReceiver to main activity

我想告诉我的 MainActivity,它在启动完成后由 BroadcastReceiver 自动启动。似乎可以像这样通过 putExtra 向 MainActivity 发送一些值:

public class StartAppAtBootReceiver extends BroadcastReceiver {

private static final String key_bootUpStart = "bootUpStart";
private static boolean bootUpStart = true;

@Override
public void onReceive(Context context, Intent intent) {
    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {

        Intent activityIntent = new Intent(context, MainActivity.class);
        activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        activityIntent.putExtra(key_bootUpStart, bootUpStart);
        context.startActivity(activityIntent);

    }
}
}

但是我如何才能在我的 MainActivity 中接收到该值?

BroadcastReceiver 上,您将意图发送到 Activity

我将您的密钥修改为 public 以便您可以重复使用它。

public static final String KEY_BOOTUP_START = "bootUpStart";

Activity 上处理 Intent。

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    processExtraData();
}

protected void onNewIntent(Intent intent) 
{
    super.onNewIntent(intent);
    setIntent(intent);
    processExtraData()
}

private void processExtraData()
{
    Intent intent = getIntent();
    // Use the data here.
    boolean value = getIntent()
        .getBooleanExtra(StartAppAtBootReceiver.KEY_BOOTUP_START, false);
}

在您的 activity 中,您可以获得开始您的活动的意图,例如:
onCreateActivity:
Intent intent = getIntent();

比:

Object value = intent.getExtra("key_bootUpStart");