Adob​​e Air文件运行时权限拒绝不会发送事件

问题描述:

我正在使用Android的相对较新的Adobe Air运行时权限来利用文件系统。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!!!"); 
        } 

我该如何解决它?你有一个单独的事件处理程序? 我使用的是Adobe Air 25.

谢谢。

您需要创建一个单独的函数,因此可以在需要时多次调用它。现在,在您的代码中,它只存在一次(当添加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(); } 
} 
+2

这将不利于OP,除非你认为他们要举报的行为的原因是,该功能得到了垃圾回收事件被炒了鱿鱼。我没有看到任何证据表明情况是这样;匿名侦听器是OP代码中文件对象所拥有的变量,所以只要文件对象存在,它就会一直存在。 – Brian

+0

这并没有帮助,因为在用户拒绝请求的情况下它不会触发事件。 – mik