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内部完成”的原因是什么?也许是误解吧?