2

I am working on a Hybrid App (Web UI with Native Service) of API version 4.0 for my Gear S3 Frontier.

  • The Web UI launches the Service.
  • Native Service uses the Sensor and Location data

My Service App has the privilege of Sensor and Location in the manifest file. When I check the privileges in code, the results show that I need to get privilege from user, which is fine.

I've implemented it using the Privacy Privilege Manager but when I request for privilege using the ppm_request_permission method, it doesn't show any message asking for the permission, and so it doesn't go the ppm_request_response_cb method.

Here's the relevant code:

Response Handler Implementation:

void ppm_request_response_handler(ppm_call_cause_e cause, ppm_request_result_e result, const char *privilege, void *user_data)
{

    dlog_print(DLOG_DEBUG, TAG, "In the ppm_request_response_handler.");

    /*
     * The result of a response triggered by calling ppm_request_permission() is a valid value only if
     * the cause parameter is equal to PRIVACY_PRIVILEGE_MANAGER_CALL_CAUSE_ANSWER.
     */
    if(cause == PRIVACY_PRIVILEGE_MANAGER_CALL_CAUSE_ANSWER)
    {
        if(result == PRIVACY_PRIVILEGE_MANAGER_REQUEST_RESULT_ALLOW_FOREVER)
        {
            if(!strcmp(privilege, "http://tizen.org/privilege/location"))
            {
                bIsLocationPrivilegeGranted = true;
                dlog_print(DLOG_DEBUG, TAG, "Service Application has been granted the Location privilege.");
            }

            if(!strcmp(privilege, "http://tizen.org/privilege/healthinfo"))
            {
                bIsHealthInfoPrivilegeGranted = true;
                dlog_print(DLOG_DEBUG, TAG, "Service Application has been granted the Health Info privilege.");
            }
        }
        else
        {
            if(!strcmp(privilege, "http://tizen.org/privilege/location"))
            {
                dlog_print(DLOG_DEBUG, TAG, "Service Application is denied to access the Location.");
            }

            if(!strcmp(privilege, "http://tizen.org/privilege/healthinfo"))
            {
                dlog_print(DLOG_DEBUG, TAG, "Service Application is denied to access the Health Information.");
            }
        }
    }
    else
    {
        if(!strcmp(privilege, "http://tizen.org/privilege/location"))
        {
            dlog_print(DLOG_DEBUG, TAG, "Service Application did not get any response to access the Location.");
        }

        if(!strcmp(privilege, "http://tizen.org/privilege/healthinfo"))
        {
            dlog_print(DLOG_DEBUG, TAG, "Service Application did not get any response to access the Health Information.");
        }
    }
}

typedef void(* ppm_request_response)(ppm_call_cause_e cause, ppm_request_result_e result, const char *privilege, void *user_data);

Method Call to Request for Permission:

//Set the function pointer value
ppm_request_response ppm_request_response_cb = ppm_request_response_handler;

//Request the user for the permission
ppm_request_permission(requiredPrivileges[i], ppm_request_response_cb, NULL);

Expected Behavior:

Service App should show any message asking the user about the permission, the ppm_request_response_handler method should be invoked then to handle the response of the user.

Itban Saeed
  • 1,660
  • 5
  • 25
  • 38

1 Answers1

1

For as dar as i am aware, the multi permission call is only available in Tizen 5+, so you need to ask each permission individually if you're using Tizen 4.0 API.

Bas Goossen
  • 459
  • 1
  • 7
  • 20