我正在构建一个启动器/主屏替换应用程序,我注意到所有的启动器都允许用户按回家去启动器的第一个屏幕。所以显然可以听取家庭钥匙的家庭替代应用程序,但我一直无法弄清楚如何。当用户按下home时,将第一个屏幕设置为启动器上的当前项目?
当用户在我的启动器内按下家时,如何能够听到主键并触发setCurrentItem(0)?
编辑
我有两个选择到现在为止:
@Override
public void onPause() {
super.onPause();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if(!this.isFinishing())
{
if (sharedPrefs.getBoolean("user_called", false))
{
// Si fue por una llamada del usuario eliminar bandera y no hacer nada
Utils.setUserCalled(getApplicationContext(), false);
}
else
{
mPager.setCurrentItem(0);
}
}
}
另一种方法是这样的:
Boolean appState = false;
@Override
public void onPause() {
super.onPause();
appState = false;
}
@Override
public void onResume() {
super.onResume();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if(!appState)
{
if (sharedPrefs.getBoolean("user_called", false))
{
// Si fue por una llamada del usuario eliminar bandera y no hacer nada
Utils.setUserCalled(getApplicationContext(), false);
}
else
{
mPager.setCurrentItem(0);
}
}
}
都使用callsed user_called一个标志,知道如果用户启动一个呼叫。我现在的问题是手机响铃时两种方法都会失败。有没有办法来过滤这些情况?
你可能想看看这个http://scriptedpapers.com/2013/07/26/how-to-identify-android-home-key-event-without-overriding-home-key-event/ –