← Todas las extensiones

Extensión nativa

KlugBlackScreen

com.klug.blackscreen

NO NECESITAS APM. Descarga y disfruta. No puede ser más sencillo.

Restaura la pantalla en Android después de que se cierre una ventana del sistema, como una solicitud de permisos, un diálogo o el teclado.

Android En desarrollo

Resumen

En algunos dispositivos Android la pantalla de una app puede quedarse en negro después de que se cierre sobre ella una ventana del sistema: una solicitud de permisos, un diálogo o el teclado en pantalla. La app sigue ejecutándose, pero no se dibuja nada hasta el siguiente cambio.

KlugBlackScreen vuelve a dibujar la vista de la app en cuanto se cierra una ventana así. Se activa una sola vez al inicio y funciona automáticamente en segundo plano. Para casos especiales también puede activarse directamente.

Funciones

  • Modo automático: se activa una vez y redibuja tras cada ventana del sistema
  • Redibujado manual para casos especiales
  • Un redibujado suave sin parpadeo y otro más fuerte para casos tercos
  • No hace nada en otras plataformas, por lo que el código puede permanecer en una app multiplataforma

Plataformas compatibles

Android arm64 · armv7

Primeros pasos

Añade la extensión al descriptor de tu aplicación:

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

Ejemplos de código

Tres flujos. Cada llamada devuelve de inmediato y hace su trabajo en el hilo de UI de Android; en otras plataformas las llamadas no hacen nada.

1 · Activar una vez al inicio
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 · Redibujar tras cerrarse una ventana del sistema
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 · Redibujado más fuerte al volver a la app
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

Resumen de la API

BlackScreen.getInstance()Devuelve la instancia única.
isSupportedVerdadero en Android; falso en iOS, macOS y escritorio, donde cada llamada no hace nada.
startAuto()Redibuja automáticamente cada vez que la ventana de la app recupera el foco, por ejemplo después de que se cierre una ventana del sistema. Llámalo una vez al inicio; una segunda llamada no tiene efecto.
stopAuto()Detiene el modo automático.
fix()Redibuja la vista una vez, sin parpadeo.
fixHard()Redibujado más fuerte para casos tercos, con un breve parpadeo. La primera llamada sustituye el fondo de lanzamiento de la ventana por blanco liso.

Requisitos

AIR SDK51.x (HARMAN)
AndroidAndroid 6.0 (API 23) o posterior
PermisosNinguno