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

Posted

技术标签:

【中文标题】Adobe Air - 检测应用程序在后台而不使用权限?【英文标题】:Adobe Air - Detect app is in the background without using permissions? 【发布时间】:2018-04-18 14:51:53 【问题描述】:

我使用 adobe Flash CS6 / Adob​​e Air 26.0 创建了一个应用程序。

要在应用程序进入后台时暂停游戏,我正确使用了 Deactivate 状态,并且一切正常。

我需要通过xml文件添加权限来读取手机状态READ_PHONE_STATE

我了解此权限还意味着该应用正在读取手机的电话号码、日志和其他一些内容,这就是我必须创建隐私政策的原因。

是否有任何其他权限可以代替READ_PHONE_STATE,因为我只需要知道应用程序是否会进入后台,而我不需要所有其他内容?

【问题讨论】:

【参考方案1】:

为了检测您的应用是进入后台还是返回前台,您必须使用READ_PHONE_STATE 权限。当您使用以下事件时,Adobe AIR 会自动添加此权限。

通过添加用于停用和重新激活应用程序的事件侦听器来检测它:

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, onDeactivate);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, onActivate);

function onDeactivate(evt:Event):void

   // Pause the game

function onActivate(evt:Event):void

   // Un-Pause the game

Event.DEACTIVATE 事件在应用程序转到 背景。 Event.ACTIVATE 事件在应用程序转到时触发 前景。

READ_PHONE_STATE 是最常见的权限,目前被大多数应用程序使用。

Adobe AIR 的一大优势在于它在所有移动操作系统上运行相同。上面的代码会在用户退出或最小化应用时通知您,而无需 androidios 设备的权限。

【讨论】:

该应用在Android和iOS手机上都可以玩,您建议您的方式可以达到这个效果吗? 如果有人在使用应用程序时呼叫用户,您的代码可以工作并暂停游戏吗? 我稍后会尝试并回复您,谢谢您的回复 一个问题,我将使用什么作为事件侦听器来捕获从后台返回的应用程序,以便取消暂停它?目前,我使用“停用”进入后台,并使用“激活”将其恢复。在您的示例中,这两个事件均指关闭或退出,但我如何才能赶上应用程序的返回? @EliasRahme 我明白你在说什么......是的,你必须为此使用READ_PHONE_STATE 权限。我现在看到它是自动添加的,我不知道它,因为它是所有应用程序使用的基本权限。我会相应地更新答案。

以上是关于Adobe Air - 检测应用程序在后台而不使用权限?的主要内容,如果未能解决你的问题,请参考以下文章

从MyProject-App.xml中检测versionNumber? Adobe AIR

ActionScript 3 Adobe AIR - 检测网络连接

Adobe Air app中的后台工作者共享对象

Adobe Air Application - 从背景黑屏幕回来

如何防止UI在调用进程时锁定在AIR中?

Adobe Air - Flash - 初始窗口位置