我想在触发一个警报时打开一个APP。我可以使用Alarm API触发警报,但我不知道在触发警报时如何打开APP。现在,当触发警报时,APP会在后台打开。
我有Firefox OS 1.1。
答案 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"
},
...
}
有一个示例可以在应用中打开图库:
你也可以在你的firefox os手机中打开这个链接,安装并测试它: