Compartilhar via


AppOpsManager Classe

Definição

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

[Android.Runtime.Register("android/app/AppOpsManager", DoNotGenerateAcw=true)]
public class AppOpsManager : Java.Lang.Object
[<Android.Runtime.Register("android/app/AppOpsManager", DoNotGenerateAcw=true)>]
type AppOpsManager = class
    inherit Object
Herança
AppOpsManager
Atributos

Comentários

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

As operações de aplicativos abrangem uma ampla variedade de funcionalidades, desde ajudar com permissões de tempo de execução, controle de acesso e rastreamento até o rastreamento do consumo de bateria.

<h2>Controle de< acesso/h2>

As operações de aplicativos podem ser controladas para cada uid ou para cada pacote. Qual deles é usado depende do provedor de API que mantém esse aplicativo-op. Para qualquer aplicativo de segurança ou privacidade relacionado, o provedor precisa controlar o app-op por uid, pois toda a segurança e privacidade é baseada no uid no Android.

Para controlar o acesso, o app-op pode ser definido para um modo para: <dl><dt><#MODE_DEFAULTdd>Comportamento padrão, pode diferir de app-op ou app-op <dt<#MODE_ALLOWED>dd>Permitir o acesso <dt#MODE_IGNORED><dd>Não permitir o acesso, ou seja, não executar a ação solicitada ou retornar dados <de espaço reservado dt#MODE_ERRORED<>dd>Lançar um SecurityException no acesso. Isso pode ser suprimido usando um ...noThrow método para verificar o modo </dl>

Os provedores de API precisam verificar o modo retornado por #noteOp se estão permitindo acesso a operações fechadas pelo aplicativo-op. #unsafeCheckOp deve ser usado para verificar o modo se nenhum acesso for concedido. Por exemplo, isso pode ser usado para exibir o estado de operação do aplicativo na interface do usuário ou ao verificar o estado antes de chamar #noteOp mais tarde.

Se uma operação se referir a um período de tempo (por exemplo, uma sessão de gravação de áudio), o provedor de API deve usar #startOp e #finishOp em vez de #noteOp.

<h3>Permissões de tempo de execução e app-ops</h3>

Cada permissão de tempo de execução definida pela plataforma (ao lado de modificadores em segundo plano) tem uma operação de aplicativo associada que é usada para rastreamento, mas também para permitir falhas silenciosas. Ou seja, se a permissão de tempo de execução for negada, o chamador obterá um SecurityException, mas se a permissão for concedida e o aplicativo for #MODE_IGNORED usado, os chamadores obterão um comportamento de espaço reservado, por exemplo, retornos de chamada de localização não aconteceriam.

<h3>Permissões< de aplicação/h3>

As permissões de operações de aplicativos são permissões definidas pela plataforma que podem ser substituídas. A verificação de segurança para permissões de aplicativo deve #MODE_DEFAULT default verificar o estado de concessão de permissão. Se o estado de operação de aplicativo estiver definido como #MODE_ALLOWED ou #MODE_IGNORED o estado de operação de aplicativo deve ser verificado em vez do estado de concessão de permissão.

Essa funcionalidade permite conceder acesso por padrão a aplicativos que preencham os requisitos para um determinado nível de permissão. Ainda assim, o comportamento pode ser substituído quando necessário.

<h2>Rastreamento</h2>

As operações de aplicativos rastreiam muitos eventos importantes, incluindo todos os acessos a APIs protegidas por permissão de tempo de execução. Isso é feito rastreando quando um aplicativo foi #noteOp noted ou #startOp started. Os dados rastreados só podem ser lidos por componentes do sistema.

<b>Somente #noteOp/#startOp são rastreados, #unsafeCheckOp não são rastreados. Por isso, é importante eventualmente ligar #noteOp ou #startOp ao fornecer acesso a operações ou dados protegidos.</b>

Alguns aplicativos estão encaminhando o acesso a outros aplicativos. Por exemplo, um aplicativo pode obter a localização do provedor de localização do sistema e, em seguida, enviar a localização para um 3º aplicativo. Nesse caso, o aplicativo que passa os dados precisa ligar #noteProxyOp para sinalizar o proxy de acesso. Isso também pode fazer sentido dentro de um único aplicativo se o acesso for encaminhado entre duas partes da marcada com marcas de atribuição diferentes.

Um aplicativo pode se cadastrar para OnOpNotedCallback se informar sobre quais acessos o sistema está rastreando para ele. Como cada permissão de tempo de execução tem um aplicativo operacional associado, essa API é particularmente útil para um aplicativo que deseja encontrar acessos inesperados a dados privados.

Documentação Java para android.app.AppOpsManager.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Construtores

AppOpsManager(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução.

Campos

ModeAllowed
Obsoleto.

Resultado de #checkOp, #noteOp, #startOp: o chamador dado tem permissão para executar a operação dada.

ModeDefault
Obsoleto.

Resultado de , #noteOp, #startOp: o chamador fornecido deve usar sua verificação de #checkOpsegurança padrão.

ModeErrored
Obsoleto.

Resultado de #checkOpNoThrow, #noteOpNoThrow, #startOpNoThrow: o chamador dado não tem permissão para executar a operação dada, e essa tentativa deve fazer com que ele tenha um erro fatal, normalmente um SecurityException.

ModeForeground
Obsoleto.

Modo especial que significa "permitir apenas quando o aplicativo está em primeiro plano.

ModeIgnored
Obsoleto.

Resultado de #checkOp, #noteOp, #startOp: o chamador dado não tem permissão para executar a operação dada, e essa tentativa deve <falhar></em> silenciosamente (não deve causar falha no aplicativo).

OpstrAddVoicemail

Necessário para acessar informações relacionadas ao estado do telefone.

OpstrAnswerPhoneCalls

Atender chamadas telefônicas recebidas

OpstrBodySensors

Acesso a sensores corporais, como frequência cardíaca, etc.

OpstrCallPhone

Permite que um aplicativo inicie uma chamada telefônica.

OpstrCamera

Necessário para poder acessar o dispositivo da câmera.

OpstrCoarseLocation

Acesso a informações grosseiras de localização.

OpstrFineLocation

Acesso a informações de localização finas.

OpstrGetUsageStats

Acesso ao android.app.usage.UsageStatsManager.

OpstrMockLocation

Injete a localização fictícia no sistema.

OpstrMonitorHighPowerLocation

Monitoramento contínuo de dados de localização com uma solicitação de energia relativamente alta.

OpstrMonitorLocation

Monitoramento contínuo dos dados de localização.

OpstrPictureInPicture

Acesso ao picture-in-picture.

OpstrProcessOutgoingCalls

APIs de acesso para desviar chamadas de saída

OpstrReadCalendar

Permite que um aplicativo leia os dados do calendário do usuário.

OpstrReadCallLog

Permite que um aplicativo leia o registro de chamadas do usuário.

OpstrReadCellBroadcasts

Leia as mensagens de transmissão de celular recebidas anteriormente.

OpstrReadContacts

Permite que um aplicativo leia os dados de contatos do usuário.

OpstrReadExternalStorage

Leia o armazenamento externo.

OpstrReadPhoneNumbers

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

OpstrReadPhoneState

Necessário para acessar informações relacionadas ao estado do telefone.

OpstrReadSms

Permite que um aplicativo leia mensagens SMS.

OpstrReceiveMms

Permite que um aplicativo receba mensagens MMS.

OpstrReceiveSms

Permite que um aplicativo receba mensagens SMS.

OpstrReceiveWapPush

Permite que um aplicativo receba mensagens por push WAP.

OpstrRecordAudio

Necessário para poder acessar o dispositivo de microfone.

OpstrSendSms

Permite que um aplicativo envie mensagens SMS.

OpstrSystemAlertWindow

Necessário para desenhar em cima de outros aplicativos.

OpstrUseFingerprint

Use a API de impressão digital.

OpstrUseSip

APIs de acesso para chamadas SIP por VOIP ou WiFi

OpstrWriteCalendar

Permite que um aplicativo grave nos dados do calendário do usuário.

OpstrWriteCallLog

Permite que um aplicativo grave no log de chamadas do usuário.

OpstrWriteContacts

Permite que um aplicativo grave nos dados de contatos do usuário.

OpstrWriteExternalStorage

Gravar armazenamento externo.

OpstrWriteSettings

Necessário para gravar/modificar/atualizar configurações do sistema.

WatchForegroundChanges
Obsoleto.

Sinalizador para #startWatchingMode(String, String, int, OnOpChangedListener): também obtenha relatórios se o estado de primeiro plano do uid de um op for alterado.

Propriedades

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
JniPeerMembers

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

PeerReference

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

CheckOp(String, Int32, String)

Este membro foi preterido.

CheckOpNoThrow(String, Int32, String)

Este membro foi preterido.

CheckPackage(Int32, String)

Este membro foi preterido.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Dispose()

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
Dispose(Boolean)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
Equals(Object)

Indica se algum outro objeto é "igual" a este.

(Herdado de Object)
FinishOp(String, Int32, String)

Este membro foi preterido.

FinishOp(String, Int32, String, String)

Informe que um aplicativo não está mais executando uma operação que havia sido iniciada anteriormente com #startOp(String, int, String, String, String)o .

FinishProxyOp(String, Int32, String, String)

Informe que um aplicativo não está mais executando uma operação que havia sido iniciada anteriormente com #startProxyOp(String, int, String, String, String)o .

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
IsOpActive(String, Int32, String)

Verifica se a operação fornecida para um pacote está ativa, i.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
NoteOp(String, Int32, String)

Este membro foi preterido.

NoteOp(String, Int32, String, String, String)

Anote um aplicativo executando uma operação e verifique se o aplicativo tem permissão para executá-la.

NoteOpNoThrow(String, Int32, String)

Este membro foi preterido.

NoteOpNoThrow(String, Int32, String, String, String)

Tipo, #noteOp(String, int, String, String, String) mas ao invés de jogar um SecurityException ele volta #MODE_ERRORED.

NoteProxyOp(String, String)

Este membro foi preterido.

NoteProxyOp(String, String, Int32, String, String)

Anote um aplicativo executando uma operação em nome de outro aplicativo ao manipular um IPC.

NoteProxyOpNoThrow(String, String)

Este membro foi preterido.

NoteProxyOpNoThrow(String, String, Int32)

Este membro foi preterido.

NoteProxyOpNoThrow(String, String, Int32, String, String)

Tipo, #noteProxyOp(String, String, int, String, String) mas ao invés de jogar um SecurityException ele volta #MODE_ERRORED.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
PermissionToOp(String)

Obtém o nome da operação do aplicativo associado a uma determinada permissão.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle.

(Herdado de Object)
SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback)

Defina um novo OnOpNotedCallbackarquivo .

StartOp(String, Int32, String)

Este membro foi preterido.

StartOp(String, Int32, String, String, String)

Relate que um aplicativo começou a executar uma operação de longa execução.

StartOpNoThrow(String, Int32, String)

Este membro foi preterido.

StartOpNoThrow(String, Int32, String, String, String)

Tipo, #startOp(String, int, String, String, String) mas ao invés de jogar um SecurityException ele volta #MODE_ERRORED.

StartProxyOp(String, Int32, String, String, String)

Relatar que um aplicativo começou a executar uma operação de longa execução em nome de outro aplicativo ao manipular um IPC.

StartProxyOpNoThrow(String, Int32, String, String, String)

Tipo, #startProxyOp(String, int, String, String, String) mas ao invés de jogar um SecurityException ele volta #MODE_ERRORED.

StartWatchingActive(String[], IExecutor, AppOpsManager+IOnOpActiveChangedListener)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

StartWatchingMode(String, String, AppOpsManager+IOnOpChangedListener)

Monitore as alterações no modo de operação para a operação fornecida no pacote de aplicativo fornecido.

StartWatchingMode(String, String, WatchForeground, AppOpsManager+IOnOpChangedListener)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

StopWatchingActive(AppOpsManager+IOnOpActiveChangedListener)

Pare de observar as alterações no estado ativo de um aplicativo-op.

StopWatchingMode(AppOpsManager+IOnOpChangedListener)

Pare o monitoramento que foi iniciado anteriormente com #startWatchingModeo .

ToArray<T>()

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
UnsafeCheckOp(String, Int32, String)

Faça uma verificação rápida para saber se um aplicativo pode ser capaz de executar uma operação.

UnsafeCheckOpNoThrow(String, Int32, String)

Tipo, #checkOp mas ao invés de jogar um SecurityException ele volta #MODE_ERRORED.

UnsafeCheckOpRaw(String, Int32, String)

Gostar #checkOp , mas retorna o <modo em>raw</em> associado ao op.

UnsafeCheckOpRawNoThrow(String, Int32, String)

Gostar #unsafeCheckOpNoThrow(String, int, String) , mas retorna o <modo em>raw</em> associado ao op.

Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

IJavaPeerable.Disposed()

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
IJavaPeerable.Finalized()

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

GetJniTypeName(IJavaPeerable)

Os aplicativos são usados para duas finalidades: controle de acesso e rastreamento.

Aplica-se a