Activité d'Android sur l'écran de verrouillage par défaut

Comment afficher une Activity ou une Dialog de Dialog pour être visible sur l'écran de verrouillage?

J'ai déjà essayé d'afficher mon activité de verrouillage lorsque l'écran s'allume en configurant différents types de fenêtres dans la méthode Activity.onCreate() :

TYPE_PRIORITY_PHONE
TYPE_SYSTEM_ALERT
TYPE_KEYGUARD

Et d'autres avec les autorisations SYSTEM_ALERT_WINDOW et INTERNAL_SYSTEM_WINDOW .

Mon activité est visible après le déverrouillage du périphérique.

METTRE À JOUR:

J'ai déjà réussi à afficher ma propre activité au lieu de l'écran de verrouillage par défaut. Il fonctionne parfaitement à moins d'utiliser le bouton HOME.

4 Solutions collect form web for “Activité d'Android sur l'écran de verrouillage par défaut”

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

Essayez d'utiliser ce drapeau pour désactiver l'écran de verrouillage lorsque l'activité est démarrée.

Après le niveau API 17, vous pouvez utiliser

 <activity android:name=".yourActivityName" android:showOnLockScreen="true" android:screenOrientation="sensorPortrait" > 

ShowOnLockScreen comme dans l'exemple …

Ne partez pas pour l'activité, car Android ne montrera pas l'écran de verrouillage derrière votre activité pour des raisons de sécurité, alors utilisez le service plutôt que l'activité.

Ci-dessous est mon code dans l'onglet Commande de mon service.

 WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); View mView = mInflater.inflate(R.layout.score, null); WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON /* | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON */, PixelFormat.RGBA_8888); mWindowManager.addView(mView, mLayoutParams); 

Et ajoutez <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> pour manifester

Utilisez ceci dans la méthode onCreate

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); // This line should be before setContentView.. setContentView(......); 

J'espère que cela fonctionnera Merci

Vous pouvez utiliser le code dans toutes les réponses que vous pensez fonctionner. Ensuite, pour empêcher le bouton HOME de fonctionner, modifiez TYPE_SYSTEM_ALERT ou TYPE_SYSTEM_OVERLAY (dépend de ce que vous utilisez actuellement) à TYPE_SYSTEM_ERROR :

 params = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD, PixelFormat.TRANSLUCENT ); params.gravity = Gravity.TOP; mOverlay = (RelativeLayout) inflater.inflate(R.layout.main, (ViewGroup) null); mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); mWindowManager.addView(mOverlay, params); 
coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.