Firefox OS:如何在代码中启动APP

时间:2013-11-15 18:20:14

标签: firefox-os

我想在触发一个警报时打开一个APP。我可以使用Alarm API触发警报,但我不知道在触发警报时如何打开APP。现在,当触发警报时,APP会在后台打开。

我有Firefox OS 1.1。

3 个答案:

答案 0 :(得分:1)

如果您要启动的唯一应用是应用内部的应用,那么您可以使用Open Web Apps API并编写如下代码:

var request = window.navigator.mozApps.getSelf();
request.onsuccess = function() {
  if (request.result) {
    setTimeout(function() {
      request.result.launch();
    }, 10000);
  } else {
    alert("Called from outside of an app");
  }
};
request.onerror = function() {
  alert("Error: " + request.error.name);
};

以上示例将在10秒后启动(引入前景)您的应用程序。

request.result是App object,用于描述您的应用。


如果您要启动其他应用,则必须使用mozApps.mgmt.getAll()查找其他应用(它将作为request.result返回一系列已安装的应用 - App objects)。要使用此API,您的应用应该是privileged个应用。有关代码示例,请查看gaia source code上的github,也可以在{{3}}上找到。

免责声明:在某些情况下,mozApps.mgmt方法需要您的应用程序进行认证,如果使用mozApps.mgmt.getAll(),我不能100%确定。如果有人知道,请编辑我的答案或发表评论。谢谢!

答案 1 :(得分:1)

您可以启动任何应用,例如:

let request = navigator.mozApps.mgmt.getAll();

request.onsuccess = function() {
  let apps = request.result;
  apps.forEach(function iterateApp(app) {
    if (app.origin != "origin of the app you want to launch") return;
    app.launch();
  });
};

request.onerror = function() {
  console.log("Error: " + request.error.name);
}; 

此处,“ navigator.mozApps.mgmt.getAll()”返回“ pendingGetAll ”对象。在成功内部, pendingGetAll.result (此处为request.result)将是一组App对象,其中包含当前浏览器或KaiOS手机中安装的所有应用。

应用来源示例:app://contacts.lic.com。
您将在应用程序的清单文件(manifest.webapp)中找到它。

答案 2 :(得分:0)

您还可以使用MozActivity打开另一个应用,请参考相机和图库应用。在camera.js:775-789中,它使用MozActivity打开图库:

var a = new MozActivity({
  name: 'browse',
  data: {
    type: 'photos'
  }
});

并且您需要在manifest.webapp中为您的应用添加avtivities:

"activities": {
  "browse": {
    "filters": {
      "type": "photos"
     },
    "disposition": "window"
  },
  ...
}

有一个示例可以在应用中打开图库:

http://jsfiddle.net/F6aEC/

你也可以在你的firefox os手机中打开这个链接,安装并测试它:

http://jsfiddle.net/F6aEC/fxos.html