-1

今、私は次のような機能を実装したいと考えています: アクティビティで、HOME、VOLUME_UP、VOLUME_DOWM などのすべてのハードウェア ボタンをシールドします。ただし、POWERボタンのみシールドできません。方法はありますか?

4

1 に答える 1

1

電源やホームなどの Android の特定のキーを傍受することはできません。たとえば、ホーム キーは傍受できません。これにより、悪意のあるアプリケーションが機能を上書きできるようになるためです。

ホーム キーをインターセプトできる唯一の方法は、アプリケーションがandroid.intent.category.HOMEマニフェストで使用することにより、ホーム アプリの置き換え自体である場合です。

次のように、音量の上下などの他のキーをキャッチできます

public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
    switch (keyCode) {
    case KeyEvent.KEYCODE_VOLUME_UP:
        if (action == KeyEvent.ACTION_UP) {
            //handle the key event
        }
        return true;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        if (action == KeyEvent.ACTION_DOWN) {
            //handle the key event
        }
        return true;
    default:
        return super.dispatchKeyEvent(event);
    }
}

Android デベロッパーのブログ投稿で次の投稿を読んでください。

Android 開発者: 戻るとその他のハード キー - 3 つの物語

于 2012-07-04T12:10:35.770 に答える