2017-08-14 52 views
-1

我正在使用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.

謝謝。

回答

0

您需要創建一個單獨的函數,因此可以在需要時多次調用它。現在,在您的代碼中,它只存在一次(當添加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