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

时间:2014-04-24 12:28:38

标签: android android-activity broadcastreceiver

当我按下"免提"按钮,系统会调用MediaButtonIntentReceiver代码并在屏幕上打开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;
    }
}

MediaButtonIntentReceiver.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();
    }
}

1 个答案:

答案 0 :(得分:0)

Toast移至您的Main活动中。

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


关键是不要使用MediaButtonIntentReceiver来检查是否显示Main。只需使用接收器启动活动,并将您的逻辑放在活动中。

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