所以我试图让我的Tizen应用程序检查并请求初始化许可,但是以下代码无法按预期工作
var readPrivilege = "http://tizen.org/privilege/filesystem.read";
function readRPSuccess(x){
alert("Success" + JSON.stringify(x));
}
function readRPError(e){
alert("error "+ JSON.stringify(e));
}
function readCHSuccess(){
}
function readCHError(){
tizen.ppm.requestPermission(readPrivilege, readRPSuccess, readRPError);
}
tizen.ppm.checkPermission(readPrivilege, readCHSuccess, readCHError);
这段代码是在我的main.js文件的初始功能中。我从运行4.0.0.1的手表和运行3.0的模拟器中得到相同的结果。我的xml文件上所需的Tizen版本是2.3
结果:黑屏,没有内容。
预期:页面要求读取权限。
更新:因此,我安装了模板项目“ HeartRateMonitor”,在xml文件上将Tizen版本所需的版本更改为4,并添加了以下代码。请注意,该代码已安装在main.js的init函数上。这次,我将其更改为请求healthinfo
权限,它按预期方式工作。当我将其更改为filesystem
权限之一时,它将不起作用。
function onSuccess() {
alert("yay");
}
function onError() {
alert("nay");
}
tizen.ppm.requestPermission("http://tizen.org/privilege/healthinfo",onSuccess, onError);
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
根据以下页面:https://developer.tizen.org/ko/development/training/web-application/understanding-tizen-programming/security-and-api-privileges
filesystem.read
不是隐私特权,因此不需要使用ppm
。请参阅表格的“隐私”列。
答案 1 :(得分:1)
首先,由于checkPermission API的无效使用,您的代码无法执行任何操作:
tizen.ppm.checkPermission(readPrivilege,readCHSuccess,readCHError);
此方法是同步的,应按以下方式使用:
if (tizen.ppm.checkPermission(readPrivilege) != "PPM_ALLOW") {
tizen.ppm.requestPermission(readPrivilege, readRPSuccess, readRPError);
} else {
console.log("already allowed!");
}
在将以上代码用于readPrivilege时,它总是打印不需要询问的消息。
您可能想请求访问文件系统。为此,您需要请求proper privilege,与文件系统API没有直接关系。对于以下目的地:
具有适当的特权,将打开要求许可的弹出窗口。 还要注意,tizen.ppm api从4.0开始可用,因此请在应用的config.xml文件中添加所需的正确版本。
答案 2 :(得分:0)
下面的技术怎么样?
var cameraPrivilege = "http://tizen.org/privilege/camera";
var result = tizen.ppm.checkPermission(cameraPrivilege);
switch (result) {
case "PPM_ALLOW":
/* Update UI and start accessing protected functionality */
break;
case "PPM_DENY":
/* Show a message and terminate the application */
break;
case "PPM_ASK":
/* Request permission */
break;
}
/* Define PermissionSuccessCallback */
function permissionSuccess(result, privilege)
{
console.log("User's action for privilege " + privilege + " was to: " + result);
}
/* Define ErrorCallback */
function errorCallback(response)
{
console.log("The following error occurred: " + response.name);
}
var cameraPrivilege = "http://tizen.org/privilege/camera";
tizen.ppm.requestPermission(cameraPrivilege, permissionSuccess, errorCallback);
有关更多详细信息,请查阅官方文档here。