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

onPause(..)ユーザーがいつアプリケーションを終了したかを確認する必要がある場合は、 のメソッドを使用してみませんActivityか?

于 2012-11-09T05:40:36.443 に答える
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 に答える