0

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 は、「戻る」と「メニュー」以外のすべてのキーを除外しているようです...
まあ、そうではありません! ホーム ボタンでホーム画面が表示され、通話終了ボタンでネイティブ ロッカー アプリケーションが実行されます。

フェローもそれを問題として主張しています:
ENDCALL ボタンの問題からリッスンする方法
ホームの戻る画面ボタンの問題
アクティビティ、特にオプション メニューでのキーの押下を抑制する
問題 4202: 機能の提案: KEYCODE_CALL をインターセプトするための許可

これらの 2 つのボタンをブロックする回避策を知っていますか?
唯一の方法は(頻繁に)ですか - C で書きますか?

4

1 に答える 1