Android 如何在屏幕上检查当前的运行活动

Android 如何在屏幕上检查当前的运行活动,android,android-activity,broadcastreceiver,Android,Android Activity,Broadcastreceiver,当我按下“免提”按钮时,会调用MediaButtonEntreceivercode,屏幕上会打开Main活动,并显示Toast 每次我按下按钮,这种情况就会发生,但我希望它只发生在第一次。第二次按下按钮时,我只想显示祝酒词,因为活动已经开始 Main.java public class Main extends Activity { private AudioManager mAudioManager; private ComponentName mAudioReceiver;

当我按下“免提”按钮时,会调用
MediaButtonEntreceiver
code,屏幕上会打开
Main
活动,并显示
Toast

每次我按下按钮,这种情况就会发生,但我希望它只发生在第一次。第二次按下按钮时,我只想显示祝酒词,因为活动已经开始


Main.java

public class Main extends Activity
{
    private AudioManager mAudioManager;
    private ComponentName mAudioReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        mAudioReceiver =
                new ComponentName(getPackageName(), MediaButtonIntentReceiver.class.getName());
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

    @Override
    protected void onResume()
    {
        super.onResume();

        mAudioManager.registerMediaButtonEventReceiver(mAudioReceiver);
    }

    @Override
    protected void onPause()
    {
        super.onPause();

        // mAudioManager.unregisterMediaButtonEventReceiver(mAudioReceiver);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

MediaButtonEntreceiver.java

public class MediaButtonIntentReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Toast.makeText(context, "Handfree Button Pressed", Toast.LENGTH_SHORT).show();


        Intent i = new Intent(context, Main.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
        // abortBroadcast();
    }
}

Toast
移动到您的
Main
活动中

仅在第一次显示活动时显示
Toast


关键是不要使用
media按钮entreceiver
检查是否显示
Main
。只需使用接收器启动活动,并将您的逻辑放入活动中


您可以使用一个
布尔值来检查它是否已经显示,您可以在
onPause()
方法中将其设置为
false

我知道了,但我需要在MediaButtonEnterceiver中执行。@user3286595这与Android的设计相反,这将非常困难,需要大量的破解。该方法遵循Android的设计,简单易行。我建议你再看看你的理由。祝你好运,无论你选择哪条路,ymmv@user3286595顺便问一下,你说“需要在MediaButtonInterceiver内部完成”的原因是什么?也许是误解吧?