os_request_permission

使用此函数,您可以请求特定权限。您使用格式 "android.permission.<permission>",因此要请求RECORD_AUDIO权限(例如),您可以调用:

os_request_permission("android.permission.RECORD_AUDIO");

此函数仅适用于Android目标。

您可以通过将多个参数传递给函数来一次请求多个权限。

这将稍后触发系统异步事件,其中内置的async_loadDS映射将包含以下键/值对:

常量描述
os_permission_grantedThis indicates that the permission has been granted
os_permission_deniedThis indicates that the permission has not been granted

值得注意的是,GameMaker原生支持以下权限,但Google认为它们是"危险的",因此必须明确请求(请注意,可以使用Android游戏选项请求某些权限,而无需此函数):

有关应用权限的更多信息,请参阅Android文档

 

语法:

os_request_permission(permissions...)

参数类型描述
permissionsString请求的权限。通过添加更多参数请求多个权限。

 

返回:

N/A

 

示例1:

if (os_type == os_android)
{
    if (os_check_permission("android.permission.INTERNET") == os_permission_denied)
    {
        os_request_permission("android.permission.INTERNET");
    }
}

上面的代码检查操作系统类型,如果是 Android,则会检查 "INTERNET" 权限,如果尚未授予,则会请求该权限。

示例2:

var _read = "android.permission.READ_EXTERNAL_STORAGE";
var _write = "android.permission.WRITE_EXTERNAL_STORAGE";

if (os_check_permission(_write) && os_check_permission(_read))
{
    MobileMedia_Share_Open("Title!", "image/gif", file);
}
else
{
    os_request_permission(_write, _read);
}

该函数检查用户是否具有读取和写入外部存储的权限。如果允许,它会运行扩展函数来使用这些权限进行操作。不过,如果其中任何一个权限不被允许,它会调用 os_request_permission() 以同时请求这两个权限。