Android,如何通过广播接收器接收主页按钮?

时间:2012-11-09 04:35:26

标签: android broadcastreceiver android-homebutton

在我的应用程序中,当用户通过单击注销按钮或通过按主页按钮键关闭应用程序退出应用程序时,我需要向服务器发送注销请求。

按钮没有问题,结果正如我所料。问题是如何获得主页按钮。根据我的研究,我们无法使用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()...");
    }
}

任何意见/建议将不胜感激。 感谢

3 个答案:

答案 0 :(得分: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);
   }

答案 1 :(得分: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了解如何发送广播消息

答案 2 :(得分:0)

如果您只是需要了解用户何时退出应用程序,为什么不使用onPause(..)的{​​{1}}方法?