Permissions API (Firefox OS)

这篇翻译不完整。请帮忙从英语翻译这篇文章

非标准
该特性是非标准的,请尽量不要在生产环境中使用它!

此 API 仅在 Firefox OS内部应用程序中可用。

 

Permissions API 用于显示应用权限以及让用户管理所有app的使用权限。有了这个API,一个应用可以读取到另一个应用的权限,并且还可以管理其权限范围。 

权限管理器可以通过navigator.mozPermissionSettings属性访问,该属性是 PermissionSettings 的实例.

已安装的应用程序权限


每个应用程序通过其应用清单请求一些权限。 每次应用程序尝试使用需要显式权限的API时,系统都会提示用户授予或拒绝该权限。 如果他选择不再提示,则用户无法改变主意。 使用此API,可以为用户提供一个界面来管理他为任何应用程序提供的所有权限。

可以通过使用 PermissionSettings.get(), set(), 和isExplicit() 等方法。

读取权限

要了解给定权限的当前状态,可以使用PermissionSettings.get() 方法.  方法返回一个字符串,给出特定应用程序权限的当前状态。 可能的值是:

允许
该权限已被授予,不需要任何进一步的用户交互。
拒绝
无论是系统还是用户,权限都被拒绝。
提示
在需要时,将通过提示明确询问用户。
未知
应用程序没有要求此权限,甚至无法提示用户获取此权限。
// 检查所有已安装的应用
var apps = navigator.mozApps.mgmt.getAll();

apps.onsuccess = function () {
  var permission = navigator.mozPermissionSettings;
  
  // 检查每个应用的权限
  apps.result.forEach(function (app) {
    var request, appName = app.manifest.name;

    for (request in app.manifest.permissions) {
      // 获取应用程序的每个权限请求的当前权限
      var p = permission.get(request, app.manifestURL, app.origin, false);

      console.log(appName + ' asked for "' + request + '" permission, which is "' + p + '"')
    }
  });
}

设置权限

要设置权限,只需使用PermissionSettings.set() 方法。它的值可能与通过get方法检索的值相同。

注意: 根据应用程序的privileges,某些权限是隐式的。 如果由于某种原因应用程序尝试更改隐式的权限,则会引发错误。 为了避免此类错误,可以使用PermissionSettings.isExplicit() 方法.

// 检查所有已安装的应用
var apps = navigator.mozApps.mgmt.getAll();

apps.onsuccess = function () {
  var permission = navigator.mozPermissionSettings;
  
  // 检查每个应用的权限
  apps.result.forEach(function (app) {
    var request, appName = app.manifest.name;

    for (request in app.manifest.permissions) {
      // 如果权限不明确
      if (!permission.isExplicit(request, app.manifestURL, app.origin, false) {
        // 询问用户应用程序请求的所有权限
        permission.set(request, 'prompt', app.manifestURL, app.origin, false);
      }
    }
  });
}

规范

暂无

再看看

文档标签和贡献者

此页面的贡献者: wonschangge
最后编辑者: wonschangge,