2012-11-09 2 views
1

내 응용 프로그램에서 로그 아웃 버튼을 클릭하거나 홈 버튼 키를 눌러 응용 프로그램을 종료하는 등 사용자가 응용 프로그램을 종료 할 때 서버에 로그 아웃 요청을 보내야합니다.안드로이드, 방송 수신기를 통해 홈 버튼을 클릭하는 방법?

버튼에 문제가 없으며 결과는 예상대로입니다. 문제는 집에 도착하는 방법입니다. 내 연구 결과에 따르면 onKeyDown(int keyCode, KeyEvent event)을 사용할 수 없으므로 버튼을 다시 가져 오는 데 사용할 수 있습니다.

내가 생각하고있는 솔루션은 수신기를 등록하고 홈 버튼을 클릭 할 때마다 브로드 캐스트를 보내는 것입니다. 그래서 수신기를 통해 서버에 로그 아웃 요청을 보내는 서비스를 시작할 수 있습니다.

현재 문제는 클릭 할 때마다 집에 가져갈 수 없다는 것입니다. 내가 쓴이 코드 :

manifest.xml

<application ... 

     <receiver android:name="HomeButtonReceiver" > 
      <intent-filter> 
       <category android:name="android.intent.category.HOME" /> 
      </intent-filter> 
     </receiver> 

</application> 

HomeButtonReceiver는

public class HomeButtonReceiver extends BroadcastReceiver { 

    private final String TAG = "HomeButtonReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "inside onReceive()..."); 
    } 
} 

모든 의견/제안을 감상 할 수있다. 감사합니다.

+0

[this] (http://stackoverflow.com/questions/10025660/override-home-and-back-button-is-true/10025904#10025904)로 홈을 처리 할 수 ​​있습니다. 버튼을 누르면 방송이 전송됩니다. –

+0

감사합니다 hotveryspicy, 나는 길을 테스트했지만 성공하지 못했습니다. 볼륨을 높이거나 낮출 수는 있지만 집에 가면 안되요. – Hesam

답변

1

dispatchKeyEvent 기능을 사용하지 않는 이유는 무엇입니까? HOME 버튼 누름 이벤트를 가로 챌 수 있습니다.

@Override 
    public boolean dispatchKeyEvent(KeyEvent keyevent) { 

     if (keyevent.getKeyCode() == KeyEvent.KEYCODE_HOME) { 
      //Do here what you want 
      return true; 
     } 
     else 
      return super.dispatchKeyEvent(event); 
    } 
+0

Thanks SahilMahajanMj, if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) { \t Log.i (TAG, "dispatchKeyEvent() ..."); return true; } else \t Log.i (TAG, "..."); return super.dispatchKeyEvent (event); 이 코드는 볼륨을 높이거나 낮출 수 있지만 집 버튼을 눌러도 아무 일도 일어나지 않습니다. – Hesam

+0

작동하지 않습니다 ... – Janosch

0

은 무엇 당신이 할 수있는 것은 당신이받을 수 있도록

귀하의 메시지가 방송 수신기를 만들 수 있습니다 지금

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode==KeyEvent.KEYCODE_HOME){ 
     //Send your own custom broadcast message 
    } 
    return super.onKeyDown(keyCode, event); 
} 

홈 버튼 이벤트 포수 당신을 만들고이

같다 방송 메시지를 보내는 방법은 herehere을 참조 할 수 있습니다.

0

사용자가 언제 응용 프로그램을 종료하는지 알아야 할 경우 onPause(..)Activity 메서드를 사용해야합니까?

+0

감사 Binoy Babu, 사용자가 응용 프로그램을 닫을 때 나는 세션 ID를 취소하기 위해 서버에 요청을 보내야하기 때문입니다. 내가 제안한 방법대로하면 사용자는 응용 프로그램을 탐색 할 수 없습니다. 따라서 사용자가 응용 프로그램을 닫으면 요청을 보냈습니다. – Hesam

관련 문제