Tizen - получение приложения для запроса разрешения - PullRequest
0 голосов
/ 15 октября 2019

, поэтому я пытаюсь заставить свое приложение 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. Требуемая версия Tizen в моем XML-файле: 2,3

Результат: черный экран без содержимого.

Ожидается: страница с запросом на чтение.

ОБНОВЛЕНИЕ: Итак, я установил шаблонный проект «HeartRateMonitor», изменил требуемую версию Tizen на 4 в файле XML и добавил код ниже. Обратите внимание, что код был установлен в функции init файла main.js. На этот раз я изменил его, чтобы запросить разрешение healthinfo, и оно работало, как ожидалось. Когда я изменил его на одно из разрешений filesystem, оно не работает.

    function onSuccess() {
        alert("yay");
    }

    function onError() {
        alert("nay");
    }
    tizen.ppm.requestPermission("http://tizen.org/privilege/healthinfo",onSuccess, onError);

Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 3 ]

1 голос
/ 16 октября 2019

Прежде всего, ваш код ничего не делает из-за недопустимого использования 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 также можно напечатать сообщение об отсутствии необходимости запрашивать.

Вы, вероятно, хотели бы запросить доступ к файловой системе. Для этого вам необходимо запросить надлежащую привилегию , не связанную напрямую с API файловой системы. Для следующих пунктов назначения:

При соответствующей привилегии всплывающее окно с запросом разрешения будетоткрыт. Также обратите внимание, что API-интерфейс tizen.ppm доступен с версии 4.0, поэтому добавьте нужную версию в файл config.xml вашего приложения.

1 голос
/ 16 октября 2019

Согласно следующей странице: https://developer.tizen.org/ko/development/training/web-application/understanding-tizen-programming/security-and-api-privileges filesystem.read не является привилегией конфиденциальности, поэтому нет необходимости использовать ppm для нее. См. Столбец конфиденциальности таблицы.

0 голосов
/ 20 октября 2019

Как насчет техники ниже?

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);

Для получения более подробной информации, пожалуйста, проверьте официальный документ здесь .

...