← Toutes les extensions

Extension native

KlugBlackScreen

com.klug.blackscreen

AUCUN APM NÉCESSAIRE. Téléchargez et profitez-en. Impossible de faire plus simple.

Restaure l’affichage sur Android après la fermeture d’une fenêtre système, comme une demande d’autorisation, une boîte de dialogue ou le clavier.

Android En développement

Vue d’ensemble

Sur certains appareils Android, l’écran d’une application peut rester noir après la fermeture d’une fenêtre système placée par-dessus : une demande d’autorisation, une boîte de dialogue ou le clavier à l’écran. L’application tourne toujours, mais rien n’est dessiné avant le prochain changement.

KlugBlackScreen redessine la vue de l’application dès qu’une telle fenêtre se ferme. Activé une fois au démarrage, il fonctionne automatiquement en arrière-plan. Pour les cas particuliers, il peut aussi être déclenché directement.

Fonctionnalités

  • Mode automatique : à activer une fois, il redessine après chaque fenêtre système
  • Redessin manuel pour les cas particuliers
  • Un redessin doux sans scintillement, et un plus fort pour les cas tenaces
  • Sans effet sur les autres plateformes : le code peut donc rester dans une application multiplateforme

Plateformes prises en charge

Android arm64 · armv7

Prise en main

Ajoutez l’extension au descripteur de votre application :

app.xml
<extensions>
    <extensionID>com.klug.blackscreen</extensionID>
</extensions>

Exemples de code

Trois flux. Chaque appel retourne immédiatement et effectue son travail sur le thread d’interface Android ; sur les autres plateformes, les appels ne font rien.

1 · Activer une fois au démarrage
Main.as
import com.klug.blackscreen.BlackScreen;

// once, in the constructor of your main class: from now on the view is redrawn
// whenever the app window gets the focus back, after a permission prompt,
// a dialog, the keyboard or another activity
BlackScreen.getInstance().startAuto();   // a second call has no effect

// iOS, macOS and desktop: isSupported is false and every call does nothing,
// so no platform check is needed. stopAuto() switches it off again (rarely needed).
2 · Redessiner après la fermeture d’une fenêtre système
Permissions.as
// call this from the result handler of any system window that covered the app:
// a permission prompt, a share sheet, a native dialog, a sign-in page
function onSystemWindowClosed():void
{
    BlackScreen.getInstance().fix();     // redraw once, no flicker
}

// example: your own permission flow reports back
myPermissionFlow.onResult = function( granted:Boolean ):void {
    onSystemWindowClosed();
    if ( granted ) startCamera(); else showPermissionHint();
};
3 · Redessin plus fort au retour dans l’application
Resume.as
import flash.desktop.NativeApplication;
import flash.events.Event;

// back from another activity (share sheet, browser, system settings) and fix()
// is not enough on a given runtime build: the stronger redraw may flicker once
NativeApplication.nativeApplication.addEventListener( Event.ACTIVATE, function( e:Event ):void {
    BlackScreen.getInstance().fixHard();
});

// the first fixHard() replaces the launch background of the window with plain white,
// so the short toggle does not show the splash image

Aperçu de l’API

BlackScreen.getInstance()Renvoie l’instance unique.
isSupportedVrai sur Android ; faux sur iOS, macOS et ordinateur, où chaque appel ne fait rien.
startAuto()Redessine automatiquement chaque fois que la fenêtre de l’application retrouve le focus, par exemple après la fermeture d’une fenêtre système. À appeler une fois au démarrage ; un second appel est sans effet.
stopAuto()Arrête le mode automatique.
fix()Redessine la vue une fois, sans scintillement.
fixHard()Redessin plus fort pour les cas tenaces, avec un bref scintillement. Le premier appel remplace l’arrière-plan de lancement de la fenêtre par du blanc uni.

Prérequis

SDK AIR51.x (HARMAN)
AndroidAndroid 6.0 (API 23) ou version ultérieure
AutorisationsAucune