Compartilhar via


Método ISensorManager::RequestPermissions (sensorsapi.h)

Abre uma caixa de diálogo do sistema para solicitar permissão do usuário para acessar dados do sensor.

Sintaxe

HRESULT RequestPermissions(
  [in] HWND              hParent,
  [in] ISensorCollection *pSensors,
  [in] BOOL              fModal
);

Parâmetros

[in] hParent

Para Windows 8, se hParent for fornecido um valor, a caixa de diálogo será modal para a janela pai. Se hParent for NULL, a caixa de diálogo não será modal. A caixa de diálogo é sempre síncrona.

Para o Windows 7, o HWND é manipulado para uma janela que pode atuar como um pai para a caixa de diálogo de permissões. Deve ser NULL se fModal for TRUE.

[in] pSensors

Para Windows 8, esse valor não é usado.

Para o Windows 7, pSensors é um ponteiro para a interface ISensorCollection que contém a lista de sensores para os quais a permissão está sendo solicitada.

[in] fModal

Para Windows 8, esse valor não é usado. Consulte hParent para controlar a modalidade.

Para o Windows 7, fModal é um BOOL que especifica o modo da caixa de diálogo. Deve ser FALSE se hParent não for nulo.

Valor Significado
TRUE
Se hParent for NULL, a caixa de diálogo será modal e, portanto, terá foco exclusivo no Windows até que o usuário responda. A chamada é síncrona. O código de retorno indica a escolha do usuário. Consulte Valor retornado.

Se hParent não for nulo, a chamada será assíncrona e o thread de chamada não aguardará o fechamento da caixa de diálogo. O código de retorno indica se a chamada foi bem-sucedida. Consulte Valor retornado.

FALSE
A caixa de diálogo é modeless. A chamada é assíncrona e o thread de chamada não aguardará o fechamento da caixa de diálogo. O código de retorno indica se a chamada foi bem-sucedida. Consulte Valor retornado.

O parâmetro hParent é ignorado.

Retornar valor

A tabela a seguir descreve códigos de retorno para resultados síncronos.

Código de retorno Descrição
S_OK
O usuário habilitou os sensores.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
O usuário optou por desabilitar os sensores.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
O usuário cancelou a caixa de diálogo ou recusou a elevação de permissão para mostrar a caixa de diálogo.
 

A tabela a seguir descreve códigos de retorno para resultados assíncronos.

Código de retorno Descrição
S_OK
Todos os sensores da coleção de sensores foram exibidos para o usuário habilitar. O método foi bem-sucedido.
S_FALSE
Alguns dos sensores da coleção de sensores foram exibidos para o usuário habilitar. Alguns sensores podem ter sido removidos da coleção; por exemplo, porque o usuário havia escolhido anteriormente mantê-lo desabilitado. O método foi bem-sucedido.
E_INVALIDARG
Um argumento não é válido.
E_POINTER
Um ponteiro é nulo.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Todos os sensores da coleção de sensores foram desabilitados anteriormente pelo usuário. A caixa de diálogo não foi mostrada.

Comentários

Fazer uma chamada síncrona do thread da interface do usuário de um aplicativo do Windows pode bloquear o thread da interface do usuário e tornar o aplicativo menos responsivo. Para evitar isso, não chame esse método do thread de interface do usuário com fModal definido como TRUE.

Observação  

Se um aplicativo ou plug-in que está em execução no modo protegido, como um Objeto Auxiliar do Navegador (BHO) para Internet Explorer quando a Internet Explorer estiver em execução no modo protegido, chamar RequestPermissions e o usuário escolher a opção Não habilitar esse sensor de localização na caixa de diálogo, o Windows exibirá a caixa de diálogo novamente se RequestPermissions for chamado novamente pelo mesmo usuário. Os aplicativos executados no modo protegido podem optar por evitar chamar RequestPermissions na inicialização para que o usuário não seja submetido a uma possível caixa de diálogo indesejada sempre que o aplicativo for iniciado.

 

Exemplos

O código de exemplo a seguir solicita permissões para todos os sensores recuperados do gerenciador de sensores, por tipo, usando uma chamada de método assíncrono. A plataforma só solicitará que o usuário habilite sensores que ainda não estão habilitados. Para determinar se o usuário habilitou sensores nesse caso, você deve manipular o evento ISensorEvents::OnStateChanged . Para obter exemplos adicionais que demonstram como solicitar permissões, consulte Solicitando permissões de usuário.

// Get the sensor collection.
hr = pSensorManager->GetSensorsByType(SAMPLE_SENSOR_TYPE_TIME, &pSensorColl);

if(SUCCEEDED(hr))
{
    // Request permissions for all sensors
    // in the collection.
    hr = pSensorManager->RequestPermissions(0, pSensorColl, FALSE);
}


Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Nenhum compatível
Plataforma de Destino Windows
Cabeçalho sensorsapi.h
Biblioteca Sensorsapi.lib
DLL Sensorsapi.dll

Confira também

ISensorManager

Gerenciando permissões de usuário

Solicitando permissões de usuário