Adobe Air 文件运行时权限拒绝不会调度事件

Posted

技术标签:

【中文标题】Adobe Air 文件运行时权限拒绝不会调度事件【英文标题】:Adobe Air file run-time permission rejection doesn't dispatch an event 【发布时间】:2018-01-22 02:34:21 【问题描述】:

我正在使用相对较新的 android 版 Adob​​e Air 运行时权限,以利用文件系统。

问题是当用户拒绝给予必要的许可时,我想再次询问他,但拒绝时不会调用事件处理程序。

file.addEventListener(PermissionEvent.PERMISSION_STATUS, function(e:PermissionEvent):void 
                        // does not reach to this point if user declined permission request
                        if (e.status == PermissionStatus.GRANTED)
                        
                            contRead();
                        );

                    try 
                        file.requestPermission();
                     catch(e:Error)
                    
                        // another request is in progress
                        trace("REQUEST ERROR!!!");
                    

我该如何解决?您有单独的事件处理程序吗? 我正在使用 Adob​​e Air 25。

谢谢。

【问题讨论】:

【参考方案1】:

您需要创建一个单独的函数,以便在需要时可以多次调用它。现在,在您的代码中,它只存在一次(当添加了 evenListener 时)。

试试下面这样的设置:

file.addEventListener(PermissionEvent.PERMISSION_STATUS, checkPermissions);

try 
 file.requestPermission(); 
catch(e:Error)

    // another request is in progress
    trace( "REQUEST ERROR!!! : " + e.toString() );


function checkPermissions (e:PermissionEvent) : void 

    trace( "Status is : " + e.status.toString() );

    // does not reach to this point if user declined permission request
    if (e.status == PermissionStatus.GRANTED)
     contRead(); 

【讨论】:

这对 OP 没有帮助,除非您认为他们报告的行为的原因是该函数在事件触发之前收集了垃圾。我没有看到任何迹象表明情况就是这样。匿名侦听器是 OP 代码中文件对象持有的变量,因此只要文件对象存在,它就会持续存在。 它没有帮助,因为如果用户拒绝了请求,它不会触发事件。

以上是关于Adobe Air 文件运行时权限拒绝不会调度事件的主要内容,如果未能解决你的问题,请参考以下文章

Adobe Air - 检测应用程序在后台而不使用权限?

Flex / adobe air 错误收集服务

Adobe AIR后退按钮事件不适用于Android API 28 +

如何在 adobe air 中显示计费权限?

Adobe AIR 3.0自带运行时兼容什么版本的Android和iOS?

如何在Adobe Air上运行现有的SWF文件