2

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

按钮没有问题,结果如我所料。问题是如何获得主页按钮。根据我的研究,无法使用onKeyDown(int keyCode, KeyEvent event),因为我们可以使用返回按钮。

我正在考虑的解决方案是注册接收器并在单击主页按钮时发送广播。所以通过接收器我可以启动一个服务来向服务器发送注销请求。

我目前的问题是每次单击时都无法获得主页按钮。这是我写的代码:

清单.xml

<application ...

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

</application>

主页按钮接收器

public class HomeButtonReceiver extends BroadcastReceiver {

    private final String TAG = "HomeButtonReceiver";

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

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

4

3 回答 3

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);
   }
于 2012-11-09T05:34:12.370 回答
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);
}

现在您可以创建一个广播接收器,以便您可以接收您的消息

您可以参考此处此处了解如何发送广播消息

于 2012-11-09T05:38:41.977 回答
0

如果您只需要了解用户何时退出应用程序,为什么不onPause(..)使用Activity?

于 2012-11-09T05:40:36.443 回答