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 で書きますか?