permiso de captura otorgado evento completo

5 minutos de lectura

avatar de usuario
Los pistoleros

Estoy creando una aplicación usando flash cc. Necesitaba permiso de almacenamiento. Resulta que necesitaba pedirle permiso al usuario para usar dispositivos de almacenamiento. Puedo pedir permiso al usuario y funciona bien. Utilizo ejemplos de este sitio web: https://helpx.adobe.com/flash-player/release-note/fp_24_air_24_release_notes.html

Pero mi problema es que no pude capturar el evento completo para acceder al permiso de almacenamiento. Debido a eso, no pude ejecutar códigos después de obtener acceso al almacenamiento. ¿Es posible capturar el evento completo para otorgar algún permiso?

el código que usé:

var file:File = File.documentsDirectory.resolvePath("somefile.txt");
trace("url_txt:" + file.url);
file.addEventListener(PermissionEvent.PERMISSION_STATUS, function permissionStatusHandler(e:PermissionEvent):void
{                        
    file.removeEventListener(PermissionEvent.PERMISSION_STATUS, permissionStatusHandler);
    if(e.status == PermissionStatus.GRANTED)
    {                            
        myTextLoader.load(new URLRequest(file.url));
        myTextLoader.addEventListener(Event.COMPLETE, onLoadTextComp);
        myTextLoader.addEventListener(IOErrorEvent.IO_ERROR, loadingTextError);
    }
    else
    {
        showPermissionError();
    }
}
);
try
{
    trace("Requesting permission");
    file.requestPermission();
}
catch(error:Error)
{
    trace("Request permission error");
}

ACTUALIZAR:

El código anterior parece funcionar bien. Pero el problema ocurre cuando traté de solicitar el mismo permiso dos veces en momentos diferentes. Tengo otra pregunta. ¿Podemos agregar una descripción mientras solicitamos permiso? Muchas aplicaciones parecen estar agregando una descripción de por qué la aplicación necesita ese permiso en particular. ¿Es posible lograr esto desde flash as3? He mirado en la web pero no he encontrado nada. Y cómo solicitar permiso para READ_PHONE_STATE?

  • Gracias por su rápida respuesta. Lo comprobaré.

    – Los pistoleros

    26 de junio de 2017 a las 9:46

  • es onRequestPermissionsResult para as3 o estudio android?

    – Los pistoleros

    26 de junio de 2017 a las 9:47

  • Mostrar su código, tal vez? “No fue capaz de capturar” suena raro.

    – Órganos

    26 de junio de 2017 a las 9:53

  • Mientras lo probaba, me encontré con un problema totalmente diferente. Si bien no tengo problemas con el evento en sí, llamar al Pedir permiso no me proporciona ninguna opción, pero dispara inmediatamente el PermisoEvento con el permiso actual en su lugar. Lo construí con AIR 24 SDK para el tiempo de ejecución de AIR 24 (Flash Player 35) y lo probé en Android 6.

    – Órganos

    26 de junio de 2017 a las 13:13

Finalmente, lo descubrí. requisitos previos:

  • Tiempo de ejecución de AIR 24+
  • androide 6+
  • El APK debe publicarse con el permiso WRITE_EXTERNAL_STORAGE (de lo contrario, se DENEGADO – en eso estaba atascado)

Luego, este código funciona bien para mí, muestra el cuadro de diálogo “Otorgar permiso” de Android y luego muestra CONCEDIDO o DENEGADO con respecto a mi elección. los Tronco class es solo un panel de depuración propio, puede cambiar Log.log llama a rastro o agárralo aquí (no tiene dependencias): https://bitbucket.org/thydmitry/ru.delimiter/src/9083fb46ce1c/classes/ru/delimiter/utils/

package
{
    import ru.delimiter.utils.Log;

    import flash.filesystem.File;

    import flash.display.StageScaleMode;
    import flash.display.StageAlign;
    import flash.display.Sprite;

    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.PermissionEvent;

    import flash.permissions.PermissionStatus;

    public class Permissions extends Sprite
    {
        private var F:File;

        public function Permissions() 
        {
            if (stage) onStage();
            else addEventListener(Event.ADDED_TO_STAGE, onStage);
        }

        private function onStage(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, onStage);

            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            Log.create(this, true);

            Log.log("[Permissions Test] started");
            Log.log("File.permissionStatus:", File.permissionStatus);

            F = File.applicationStorageDirectory.resolvePath("somefile.txt");
            F.addEventListener(PermissionEvent.PERMISSION_STATUS, onPerm);

            stage.addEventListener(MouseEvent.CLICK, onClick);
        }

        private function onClick(e:MouseEvent):void
        {
            F.requestPermission();
        }

        private function onPerm(e:PermissionEvent):void
        {
            Log.log("User's decision:", e.status.toUpperCase());
        }
    }
}

  • ¿PERMISSION_STATUS se ejecuta de inmediato o se ejecuta solo después de que cambió el estado del permiso?

    – Los pistoleros

    27 de junio de 2017 a las 5:00

  • Resulta que mi código anterior estaba funcionando como está. El problema es que necesito leer dos archivos de texto. Si la aplicación no pudo encontrar el primero, intentará leer el segundo. Pongo el mismo código cuando el segundo archivo de texto intenta leer. Pero en la segunda vez, arroja un error en el dispositivo. Funciona bien en pc. ¿Por qué arroja error? Lo sé, no puedo solicitar varios permisos simultáneamente, pero no estoy solicitando permisos simultáneamente. Sin embargo, estoy solicitando el mismo permiso dos veces pero no al mismo tiempo. ¿No puedo solicitar el mismo permiso dos veces?

    – Los pistoleros

    27 de junio de 2017 a las 7:17

  • @TheGunners En la medida en que probé el código anterior, una vez que el usuario ha otorgado el permiso voluntariamente, cualquier consecuencia Pedir permiso solo incendios PermisoEvento con estado ajustado a otorgado inmediatamente. No he encontrado ninguna excepción al hacerlo. Además, una vez que el usuario ha otorgado el permiso, permanece otorgado incluso si cierra y vuelve a abrir la aplicación, a menos que desactive el permiso otorgado en la configuración de la aplicación (en este caso, el comportamiento vuelve al inicial y requerirá llamar Pedir permiso otra vez).

    – Órganos

    27 de junio de 2017 a las 8:41


  • No sé por qué, pero está mostrando error. Pero me he deshecho del código. Ahora solo pido permiso una vez. Y otra pregunta, ¿es posible agregar descripción al solicitar permisos?

    – Los pistoleros

    27 de junio de 2017 a las 9:22

  • ¿Descripción de @TheGunners? ¿Qué tipo de descripción? ¿Te refieres al cuadro de diálogo de Android “Conceder permiso”?

    – Órganos

    27/06/2017 a las 11:00

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad