当我按下"免提"按钮,系统会调用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();
}
}
答案 0 :(得分:0)
将Toast
移至您的Main
活动中。
仅在第一次显示活动时显示Toast
。
关键是不要使用MediaButtonIntentReceiver
来检查是否显示Main
。只需使用接收器启动活动,并将您的逻辑放在活动中。
您可以使用boolean
值来检查它是否已显示,您可以在false
方法中将其设置为onPause()
。