0


0

Android-HomeおよびEndCallボタンのイベントをキャプチャ/抑制しますか?

Androidでロッカーアプリを作成しようとしたことがある場合は、必ずこの問題を解決してください。

boolean mBackPressed = false;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            mBackPressed = true;
            break;
        case KeyEvent.KEYCODE_MENU:
            if (mBackPressed)
                unLock();
            break;
        default:
            mBackPressed = false;
            showMessage();
            break;
        }
    }
    return true;
}

private void showMessage() {
    Toast.makeText(getBaseContext(), "Back + Menu", Toast.LENGTH_SHORT)
            .show();
}

private void unLock() {
    this.setResult(Activity.RESULT_OK);
    this.finish();
}

onKeyDownは「Back」と「Menu」以外のすべてのキーを除外しているようです…​ + まあ、それは真実ではありません! [ホーム]ボタンは引き続きホーム画面を表示し、[通話の終了]ボタンはネイティブのロッカーアプリケーションを実行します!

フェローも問題としてそれを主張しています:+ ENDCALLボタンから聞く方法 + http://groups.google.co *オプションメニュー] + http://code.google.com/p/android/issues/detail?id=4202 [問題4202:機能の提案:KEYCODE_CALLを傍受する許可]

これらのボタンを2つブロックする回避策を知っていますか? +唯一の方法は(しばしば)-_http://www.cs.bgu.ac.il/~omri/Humor/write_in_c.html [Cで書く] _?

1 Answer


7


[ホーム]ボタンと[終了]ボタンを傍受できるとは思わない。 可能であれば、これにより、悪意のあるアプリケーションがユーザーが離れることを防ぎ、電話を効果的に乗っ取ることができます。

アプリケーションのオプションは、http://developer.android.com/guide/topics/intents/intents-filters.html#imatch [`android.intent.category.HOME`インテント]を使用して代替ホーム画面を作成することです。