捕获权限授予完整事件

时间:2017-06-26 09:39:29

标签: android actionscript-3 flash permissions

我正在使用flash cc创建应用。我需要存储许可。事实证明,我需要询问用户使用存储设备的权限。我可以要求用户许可,它工作正常。我使用本网站的例子:https://helpx.adobe.com/flash-player/release-note/fp_24_air_24_release_notes.html
 但我的问题是我无法捕获完整的事件来访问存储权限。因此,在我访问存储后,我无法运行代码。是否可以捕获完整事件以授予任何许可?

我使用的代码:

READ_PHONE_STATE

更新

上面的代码似乎工作正常。但是当我尝试在不同时间请求两次相同的权限时,会出现问题。我还有一个问题。我们可以在申请许可时添加说明吗?很多应用程序似乎都在添加描述为什么应用程序需要特定权限。有可能从flash as3实现这一点吗?我已经看过网络但找不到任何东西。以及如何申请$('#manageEditContract').attr('data-is-allow-to-edit', JSON.stringify(data.IsAllowToEdit)); 的权限?

1 个答案:

答案 0 :(得分:3)

最后,我想通了。先决条件:

  • AIR运行时24 +
  • Android 6 +
  • APK必须使用WRITE_EXTERNAL_STORAGE权限发布(否则会自动 DENIED - 我被困在哪里)

然后,这段代码对我很有用,它会显示Android的“授予权限”对话框,然后根据我的选择输出GRANTED或DENIED。 日志类只是我自己的调试面板,您可以将 Log.log 调用更改为跟踪或在此处获取(它没有依赖项):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());
        }
    }
}