2015-11-06 2 views
0

Je veux désactiver les boutons d'accueil et d'alimentation automatiquement après l'ouverture de mon application et les activer après avoir appuyé sur le bouton de sortie dans l'application.désactiver le bouton d'accueil dans la sucette par programme

Je l'ai réalisé en faisant mon application en tant qu'application lanceur et cela fonctionne jusqu'à Jellybean (testé jusqu'à 4.1.2).

Mais la même application ne fonctionne pas dans les versions KitKat et Lollipop. J'ai pensé que pour utiliser la technique de kiosque pour désactiver le bouton d'accueil dans Lollipop. Référez-vous à https://sdgsystems.com/blog/implementing-kiosk-mode-android-part-3-android-lollipop, il nécessite une application de propriétaire de l'appareil et quelques étapes pour y parvenir.

Bien que mon application consiste à bloquer automatiquement la fonction du bouton d'accueil, cela ne fonctionne pas.

Mes questions sont les suivantes:

  • Y at-il procédé pour désactiver le bouton d'accueil en lollipop?
  • Comment l'obtenir par programme?

Si le kiosque est la technique, alors comment le rendre adapté à mes besoins? (Vous cherchez un guide à travers)

+0

La méthode de l'application du lanceur ne fonctionne pas? lorsque vous appuyez sur le bouton d'accueil android appelle le lanceur pour montrer, cela ne devrait pas avoir changé – Nanoc

+0

êtes-vous sûr, la méthode de lancement fonctionne-t-elle dans la sucette? – user2625151

+0

Etes-vous sûr d'avoir défini votre application comme lanceur par défaut? – m0skit0

Répondre

0

Voici le flux que je suggère. Créez une application de propriétaire d'appareil et apportez la propriété de l'appareil via Nump Bump ou via adb. Ajoutez votre nom de package à setLockTaskPackage() dans l'application propriétaire de l'appareil.

Maintenant, dans l'application à laquelle vous souhaitez verrouiller l'appareil, appelez la méthode startLockTask() et votre appareil sera verrouillé sur cette application spécifique jusqu'à ce que vous appeliez la fonction stopLockTask().

Vous pouvez trouver les informations de l'API here.

Sur la façon de créer une application de propriétaire de l'appareil et un guide, vous pouvez vous référer au site Web de Florent Dupont.

0

D'abord désolé pour la réponse tardive. première chose est programmeur ne bloque pas le bouton d'accueil. Ils sont utilisés seulement pour cacher le processus de bouton de la maison derrière l'écran de verrouillage.

Comment pouvez-vous faire cela? simple. Il suffit d'utiliser la fenêtre de votre écran de verrouillage en tant qu'écran du gestionnaire de fenêtres, c'est pourquoi après avoir appuyé sur la touche accueil, l'écran de votre mobile ne sera pas réduit. C'est un petit truc utilisé dans la plupart des applications de verrouillage de succès.

et encore une chose est de savoir comment chevaucher la barre d'état du système de fenêtre du téléphone.

Pour cela Vous pouvez utiliser du code comme celui-ci et vous pouvez le modifier comme vous le souhaitez.

manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)); 

localLayoutParams = new WindowManager.LayoutParams(); 
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; 
localLayoutParams.gravity = Gravity.TOP;  

localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE| 

//WindowManager.LayoutParams.FLAG_LAYOUT_ATTACHED_IN_DECOR | 
    WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN | 

     // this is to enable the notification to recieve touch events 
     //WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | 
     WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
     // Draws over status bar 
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 


//localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; 
localLayoutParams.height = (int) (50 *  getResources().getDisplayMetrics().scaledDensity); 
localLayoutParams.format = PixelFormat.TRANSPARENT; 

view = new customViewGroup(this); 

manager.addView(view, localLayoutParams); 

et de créer la classe customeVIewGroup comme ça ..

public class customViewGroup extends ViewGroup { 

    public customViewGroup(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     Log.v("customViewGroup", "**********Intercepted"); 
     return true; 
    } 
}