38 votes

Remplacer le bouton d'alimentation comme le bouton d'accueil

Eh bien, je suis en train de faire quelque chose dans lequel je veux désactiver tous les boutons durs de l'appareil.

Boutons durs comme Alimentation, Accueil, Volume haut, Volume bas, Recherche, Retour.

J'ai réussi à remplacer presque tous les boutons aquí sauf le pouvoir.

Je veux juste que vous voyiez et que vous partagiez vos idées pour que je puisse m'en sortir.

Je reçois le pression longue L'événement clé du pouvoir dans onDispatchKeyEvent() De la même façon, je veux attraper le petit clic de la même chose. De plus, en appuyant sur le bouton d'alimentation, j'ai aussi essayé d'arrêter Écran éteint en obtenant le Broadcast de SCREEN_OFF et j'ai réussi à le recevoir mais je n'ai pas pu le manipuler.

Gracias.

Ensuite, j'ai créé un ReceiverScreen qui reçoit la diffusion de Screen on/off.

Écran de réception.java

public class ReceiverScreen extends BroadcastReceiver {

    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // do whatever you need to do here
            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // and do whatever you need to do here
            wasScreenOn = true;
        }
    }
}

DisableHardButton.java

public class DisableHardButton extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mReceiver = new ReceiverScreen();
    registerReceiver(mReceiver, filter);
    }

@Override
    protected void onPause() {
        // when the screen is about to turn off
        if (ScreenReceiver.wasScreenOn) {
            // this is the case when onPause() is called by the system due to a screen state change
            System.out.println("SCREEN TURNED OFF");

    } else {
        // this is when onPause() is called when the screen state has not changed
    }
    super.onPause();
}

@Override
protected void onResume() {
    // only when screen turns on
    if (!ScreenReceiver.wasScreenOn) {
        // this is when onResume() is called due to a screen state change
        System.out.println("SCREEN TURNED ON");
    } else {
        // this is when onResume() is called when the screen state has not changed
    }
    super.onResume();
}
}

0 votes

Quel est le but..., peut-être qu'il y a une autre solution de contournement

2 votes

Vous ne pouvez pas faire ça avec le stock Android. Il y a aussi beaucoup de questions à ce sujet sur Stackoverflow.com Que pensez-vous trouver sur le vôtre maintenant ?

0 votes

La question semble similaire, vérifiez ceci stackoverflow.com/questions/8036701/how-to-disable-power-button

2voto

Radhey Points 1335

Je sais que c'est trop tard, mais cela peut être utile pour d'autres développeurs à l'avenir. Testé sur Android N . Référence de https://stackoverflow.com/a/15828592/1065357

 @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if(!hasFocus) {
           Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
            sendBroadcast(closeDialog);
        }
    }

0voto

B.shruti Points 309

Si quelqu'un cherche une solution pour développer votre application en mode kiosque/COSU (Corporate Owned Single Use application) si vous avez besoin de désactiver divers boutons matériels, veuillez suivre le lien ci-dessous -.

https://www.andreasschrade.com/2015/02/16/Android-tutorial-how-to-create-a-kiosk-mode-in-Android/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X