2015-05-05 6 views
1

Мне нужно переопределить кнопку «Главная» для приложения «Заблокировать экран». И я нашел следующий ответ, который перезапускает приложение через 6 секунд при нажатии на кнопку дома.Переопределить домашнюю кнопку в Android

protected void onUserLeaveHint() { 
    Intent i=new Intent(this,MainActivity123.class);   
    startActivity(i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); 
    Toast.makeText(this,"leaveHint",Toast.LENGTH_SHORT).show(); 
} 

Но я хочу запустить приложение сразу. Таким образом, я предполагаю, что Тир был ответ говоря, если мы делаем наше приложение по умолчанию приложение Launcher, чем Тир не будет времени gap.So я добавил в своем манифесте

<intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.HOME"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

Но это не работает и приложение еще перезагружать после 6 сек. что мне делать.

Так потратить немного больше исследования и нашел другой метод {используется для перехода к экрану по умолчанию в пусковой установке, когда вы уже на начальном экране} метод вызывается автоматически, используя соответствующий флаг в startActivity()

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    Toast.makeText(this,"onNewEvent",Toast.LENGTH_SHORT).show(); 
    if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 
      Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) { 
     Toast.makeText(this,"onNewEvent",Toast.LENGTH_SHORT).show(); 
     //++goHome++ 
     startActivity(intent); 
    } 
} 

Метод вызван, но приложение все еще начинается через 6 секунд. SO никакого прогресса Любое предложение ........

+0

Вы хотите, чтобы «пользователь не должен покидать ваше приложение»? – Paritosh

+0

Нельзя переопределять кнопку дома (( – zond

+0

Как я уже говорил, я делаю LockScreenApp. Так что же было бы для создания приложения, если пользователь может просто нажать на дом и оставить его. –

ответ

0

Попробуйте перекрывая кнопку домой по реализации этого метода:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_HOME)) { 
     Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();      
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

:) Надеюсь, что это помогает.

+1

Я пробовал этот метод onKeyDown, он переопределяет другую жесткую кнопку, но не домашнюю кнопку. Вероятно, из API14 и выше это делает 'nt даже распознать домашний ключ. Любое другое предложение –