diff options
Diffstat (limited to 'docs/html-intl/intl/pt-br/preview/behavior-changes.jd')
-rw-r--r-- | docs/html-intl/intl/pt-br/preview/behavior-changes.jd | 402 |
1 files changed, 402 insertions, 0 deletions
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd new file mode 100644 index 0000000..cd99bbd --- /dev/null +++ b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd @@ -0,0 +1,402 @@ +page.title=Mudanças de comportamento +page.keywords=preview,sdk,compatibility +sdk.platform.apiLevel=MNC +@jd:body + +<div id="qv-wrapper"> +<div id="qv"> + +<h2>Neste documento</h2> + +<ol id="toc44" class="hide-nested"> + <li><a href="#behavior-runtime-permissions">Permissões do tempo de execução</a></li> + <li><a href="#behavior-power">Otimizações de economia de energia</a> + <ol> + <li><a href="#behavior-doze">Soneca</a></li> + <li><a href="#behavior-app-standby">Aplicativo em espera</a></li> + </ol> + </li> + <li><a href="#behavior-adoptable-storage">Dispositivos de armazenamento adotáveis</a></li> + <li><a href="#behavior-apache-http-client">Remoção do cliente Apache HTTP</a></li> + <li><a href="#behavior-audiomanager-Changes">Mudanças no AudioManager</a></li> + <li><a href="#behavior-test-selection">Seleção de texto</a></li> + <li><a href="#behavior-keystore">Mudanças no Android Keystore</a></li> + <li><a href="#behavior-network">Mudanças de rede e Wi-Fi</a></li> + <li><a href="#behavior-camera">Mudanças no serviço de câmera</a></li> + <li><a href="#behavior-art-runtime">Tempo de execução de ART</a></li> + <li><a href="#behavior-apk-validation">Validação de APK</a></li> + <li><a href="#behavior-afw">Mudanças do Android for Work</a></li> +</ol> + +<h2>Diferenças de API</h2> +<ol> +<li><a href="{@docRoot}preview/download.html">API de nível 22 para M Preview »</a> </li> +</ol> + + +<h2>Veja também</h2> +<ol> +<li><a href="{@docRoot}preview/api-overview.html">Visão geral da API do M Developer Preview</a> </li> +</ol> + +</div> +</div> + +<p>Junto com novas capacidades e recursos, o M Developer Preview inclui uma variedade +de mudanças do sistema e alterações no comportamento da API. Este documento destaca algumas +das alterações principais que você deve entender e levar em consideração nos aplicativos.</p> + +<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado + pelas alterações na plataforma.</p> + +<h2 id="behavior-runtime-permissions">Permissões do tempo de execução</h1> +<p>Esta prévia introduz um novo modelo de permissões em que os usuários podem gerenciar diretamente + as permissões do aplicativo no tempo de execução. Este modelo fornece aos usuários uma visibilidade aprimorada e controle sobre permissões, + ao mesmo tempo em que agiliza os processos de atualização automática e instalação para os desenvolvedores de aplicativos. +Os usuários podem conceder ou revogar as permissões individualmente para os aplicativos instalados. </p> + +<p>Nos aplicativos direcionados para o M Preview, certifique-se de verificar e solicitar as permissões + no tempo de execução. Para determinar se o aplicativo recebeu uma permissão, chame + o novo método {@code Context.checkSelfPermission()}. Para solicitar uma permissão, chame o novo método + {@code Activity.requestPermission()}. Mesmo se o aplicativo não é direcionado para o M, + deve-se testá-lo sob o novo modelo de permissões.</p> + +<p>Para obter mais detalhes sobre o suporte do novo modelo de permissões no aplicativo, consulte a página de prévia de desenvolvedor +<a href="{@docRoot}preview/features/runtime-permissions.html"> +Permissões</a>. Para obter dicas sobre como avaliar o impacto no aplicativo, + consulte o <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">guia de teste</a>.</p> + +<h2 id="behavior-power">Otimizações de economia de energia</h2> +<p>Esta prévia introduz novas otimizações de economia de energia para dispositivos e aplicativos ociosos.</p> + +<h3 id="behavior-doze">Soneca</h3> +<p>Se o dispositivo estiver desconectado e parado com a tela desligada por um período, + o modo <em>Soneca</em> será ativado, onde ele tentará manter o sistema em um estado ocioso. Neste modo, + os dispositivos retomam as operações normais periodicamente por breves períodos para que a sincronização de aplicativos + possa ocorrer e para que o sistema possa realizar quaisquer operações pendentes.</p> + +<p>As seguintes restrições se aplicam aos aplicativos durante a Soneca:</p> +<ul> +<li>O acesso à rede é desativado, a não ser que o aplicativo receba um convite de alta prioridade + do Google Cloud Messaging.</li> +<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Bloqueios de soneca</a> são ignorados.</li> +<li>Os despertadores agendados com a classe {@link android.app.AlarmManager} são ignorados, + exceto os alarmes definidos com o método {@link android.app.AlarmManager#setAlarmClock setAlarmClock()} + e {@code AlarmManager.setAndAllowWhileIdle()}.</li> +<li>As verificações de Wi-Fi não são realizadas.</li> +<li>Sincronizações e trabalhos para os adaptadores de sincronização e {@link android.app.job.JobScheduler} + não têm permissão para serem executados.</li> +</ul> +</p> +<p>Quando o dispositivo sair do modo soneca, quaisquer sincronizações e trabalhos pendentes são executados.</p> +<p>É possível testar este recurso conectando o dispositivo executando o M Preview + à máquina de desenvolvimento e chamando os seguintes comandos: +</p> +<pre class="no-prettyprint"> +$ adb shell dumpsys battery unplug +$ adb shell dumpsys deviceidle step +$ adb shell dumpsys deviceidle -h +</pre> +<p class="note"><strong>Observação</strong>: o próximo lançamento do +<a href="https://developers.google.com/cloud-messaging/" class="external-link"> +Google Cloud Messaging</a> permite que você designe + mensagens de alta prioridade. Se o aplicativo recebe mensagens de alta prioridade do GCM, + um acesso breve à rede é concedido mesmo quando o dispositivo está no modo soneca. +</p> + +<p>Consulte o +<a href="{@docRoot}preview/testing/guide.html#doze-standby">guia de teste</a> para obter dicas sobre +como testar a soneca nos aplicativos. </p> + +<h3 id="behavior-app-standby">Aplicativo em espera</h3> +<p>Com esta prévia, o sistema pode determinar quais aplicativos estão em espera quando +não estão em uso ativo. O aplicativo é considerado em espera após um período, a não ser que o sistema detecte +algum destes sinais:</p> + +<ul> +<li>O aplicativo foi explicitamente iniciado pelo usuário.</li> +<li>O aplicativo tem um processo atualmente em primeiro plano (seja uma atividade ou serviço de primeiro plano + ou esteja em uso por outra atividade ou serviço de primeiro plano).</li> +<li>O aplicativo gera uma notificação que o usuário vê na tela de bloqueio + ou na bandeja de notificações.</li> +<li>O usuário explicitamente pede para que o aplicativo seja liberado das otimizações, + ajustado em <strong>Settings (Configurações)</strong>.</li> +</ul> + +<p>Se o dispositivo estiver desconectado, o aplicativo considerado ocioso terá o acesso +à rede desativado e as sincronizações e os trabalhos suspensos. Quando o dispositivo está conectado em uma fonte de alimentação, + esses aplicativos têm acesso à rede permitido e podem executar quaisquer sincronizações e trabalhos pendentes. Se o dispositivo permanece ocioso por longos períodos, + os aplicativos ociosos têm acesso à rede permitido aproximadamente uma vez por dia.</p> + +<p>É possível testar este recurso conectando o dispositivo executando o M Preview + à máquina de desenvolvimento e chamando os seguintes comandos: +</p> +<pre class="no-prettyprint"> +$ adb shell dumpsys battery unplug +$ adb shell am set-idle <packageName> true +$ adb shell am set-idle <packageName> false +$ adb shell am get-idle <packageName> +</pre> + +<p class="note"><strong>Observação</strong>: o próximo lançamento do +<a href="https://developers.google.com/cloud-messaging/" class="external-link"> +Google Cloud Messaging</a> (GCM) permite que você +designe mensagens de alta prioridade. Se o aplicativo recebe mensagens de alta prioridade do GCM, +um acesso breve à rede é concedido mesmo quando o aplicativo está ocioso. +</p> + +<p>Consulte o +<a href="{@docRoot}preview/testing/guide.html#doze-standby">guia de teste</a> para obter dicas sobre como +testar a espera dos aplicativos. </p> + +<h2 id="behavior-adoptable-storage">Dispositivos de armazenamento adotáveis</h2> +<p> +Com esta prévia, os usuários podem <em>adotar</em> dispositivos de armazenamento externo como cartões SD. Adotar um dispositivo +de armazenamento externo criptografa e formata o dispositivo para agir como um armazenamento interno. Este recurso +permite que os usuários movam aplicativos e dados privados desses aplicativos entre dispositivos de armazenamento. Ao mover aplicativos, +o sistema respeita a preferência +<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a> +no manifesto.</p> + +<p>Se o aplicativo acessar as seguintes APIs ou campos, saiba que os caminhos de arquivos retornados +serão alterados dinamicamente quando o aplicativo for movido entre os dispositivos de armazenamento externo e interno. +Ao compilar caminhos de arquivos, é recomendado que essas APIs sempre sejam chamadas dinamicamente. +Não use caminhos de arquivo criptografados nem persista em caminhos de arquivo completamente qualificados que foram compilados anteriormente.</p> + +<ul> +<li>Métodos {@link android.content.Context}: + <ul> + <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li> + <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li> + <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li> + <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li> + <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li> + <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li> + <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li> + <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li> + <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li> + </ul> +</li> +<li>Campos {@link android.content.pm.ApplicationInfo}: + <ul> + <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li> + <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li> + <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li> + <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li> + <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li> + <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li> + </ul> +</li> +</ul> + +<p>Para depurar este recurso na prévia de desenvolvedor, é possível ativar a adoção +de uma unidade USB que está conectada a um dispositivo Android por meio de um cabo USB On-The-Go (OTG) executando este comando:</p> + +<pre class="no-prettyprint"> +$ adb shell sm set-force-adoptable true +</pre> + +<h2 id="behavior-apache-http-client">Remoção do cliente Apache HTTP</h2> +<p>Esta prévia remove o suporte para o cliente Apache HTTP. Se o aplicativo estiver usando este cliente e for direcionado +para Android 2.3 (nível da API 9) ou mais recente, use +a classe {@link java.net.HttpURLConnection}. Esta API é mais eficiente, pois reduz o uso de rede por meio de compressão transparente e armazenamento +em cachê de respostas, além de minimizar o consumo de energia. Para continuar usando as APIs do Apache HTTP, +deve-se primeiro declarar a dependência de tempo de compilação no arquivo {@code build.gradle}: +</p> +<pre> +android { + useLibrary 'org.apache.http.legacy' +} +</pre> +<p>O Android está mudando da biblioteca OpenSSL para +<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> +. Caso esteja usando o Android NDK no aplicativo, não vincule contra bibliotecas criptográficas +que não fazem parte da API de NDK, como {@code libcrypto.so} e {@code libssl.so}. Estas bibliotecas não são APIs públicas +e podem mudar ou apresentar erros sem notificar entre liberações e dispositivos. +Além disso, você pode se expor a vulnerabilidades de segurança. Em vez disso, +modifique o código nativo para chamar as APIs de criptografia Java via JNI ou para vincular estaticamente +com relação a uma biblioteca criptográfica de sua escolha.</p> + +<h2 id="behavior-audiomanager-Changes">Mudanças no AudioManager</h2> +<p>Ajustar o volume diretamente ou desativar o áudio de transmissões específicas por meio da classe {@link android.media.AudioManager} +não são mais recursos suportados. O método {@link android.media.AudioManager#setStreamSolo(int,boolean) +setStreamSolo()} é obsoleto e deve-se chamar o método +{@code AudioManager.requestAudioFocus()}. De forma semelhante, o método +{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} é +obsoleto; em vez disso, chame o método {@code AudioManager.adjustStreamVolume()} +e passe o valor da direção de {@code ADJUST_MUTE} ou {@code ADJUST_UNMUTE}.</p> + +<h2 id="behavior-test-selection">Seleção de texto</h2> + +<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" /> + +<p>Quando os usuários selecionam o texto no aplicativo, agora é possível exibir ações de seleção de texto como +<em>Recortar</em>, <em>Copiar</em> e <em>Colar</em> na +<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">barra de ferramentas flutuante</a>. A implementação da interação do usuário é semelhante ao processo +da barra de ação contextual, como descrito em +<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews"> +Ativação do modo de ação contextual para vistas individuais</a>.</p> + +<p>Para implementar uma barra de ferramentas flutuante para seleção de texto, faça as seguintes alterações nos aplicativos +existentes:</p> +<ol> +<li>No objeto {@link android.view.View} ou {@link android.app.Activity}, altere as chamadas +{@link android.view.ActionMode} de +{@code startActionMode(Callback)} para {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li> +<li>Pegue a implementação existente de {@code ActionMode.Callback} e torne-a uma extensão de +{@code ActionMode.Callback2}.</li> +<li>Substitua o método {@code Callback2.onGetContentRect()} para fornecer as coordenadas do conteúdo +do objeto {@link android.graphics.Rect} (como um retângulo de seleção de texto) na vista.</li> +<li>Se o posicionamento do retângulo deixar de ser válido e for o único elemento a ser invalidado, +chame o método {@code ActionMode.invalidateContentRect()}.</li> +</ol> + +<p>Caso esteja usando a <a href="{@docRoot}tools/support-library/index.html"> +biblioteca de suporte Android</a> revisão 22.2, saiba que as barras de ferramentas flutuantes não +têm compatibilidade com versões anteriores e que o appcompat tem controle sobre os objetos {@link android.view.ActionMode} por +padrão. Isto evita que barras de ferramentas flutuantes sejam exibidas. Para ativar o suporte de +{@link android.view.ActionMode} em um +{@link android.support.v7.app.AppCompatActivity}, chame +{@code android.support.v7.app.AppCompatActivity.getDelegate()} e, em seguida, chame +{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} no objeto +{@link android.support.v7.app.AppCompatDelegate} retornado e defina +o parâmetro de entrada para {@code false}. Esta chamada retorna o controle dos objetos {@link android.view.ActionMode} +à estrutura. Em dispositivos que são executados no M Preview, isto permite que a estrutura suporte os modos de +{@link android.support.v7.app.ActionBar} ou de barra de ferramenta flutuante, enquanto que, para dispositivos anteriores ao M Preview, +somente os modos {@link android.support.v7.app.ActionBar} são suportados.</p> + +<h2 id="behavior-keystore">Mudanças no Android Keystore</h2> +<p>Com esta prévia, +o <a href="{@docRoot}training/articles/keystore.html">provedor Android Keystore</a> não suporta mais +DSA. ECDSA ainda é suportado.</p> + +<p>As chaves que não exigem criptografia em rest não precisam ser excluídas quando a tela de bloqueio segura +é desativada ou redefinida (por exemplo, pelo usuário ou por um administrador do dispositivo). As chaves que exigem +criptografia serão excluídas durante esses eventos.</p> + +<h2 id="behavior-network">Mudanças de rede e Wi-Fi</h2> + +<p>Esta prévia introduz as seguintes alterações de comportamento nas APIs de rede e Wi-Fi.</p> +<ul> +<li>Os aplicativos podem alterar o estado dos objetos {@link android.net.wifi.WifiConfiguration} +somente se você os tiver criado. Você não tem permissão para modificar nem excluir objetos +{@link android.net.wifi.WifiConfiguration} criados pelo usuário ou outros aplicativos. +</li> +<li> +Anteriormente, se um aplicativo forçasse o dispositivo a se conectar a uma rede Wi-Fi específica usando +{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} com a configuração +{@code disableAllOthers=true}, o dispositivo desconectava de outras redes, +como dados de celular. Nesta prévia, o dispositivo não rompe a conexão com outras redes. Se +o {@code targetSdkVersion} do aplicativo for {@code “20”} ou menor, ele é fixado +à rede Wi-Fi selecionada. Se o {@code targetSdkVersion} do aplicativo for {@code “21”} ou maior, use +as APIS de multi-rede (como +{@link android.net.Network#openConnection(java.net.URL) openConnection()}, +{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} e o novo método +{@code ConnectivityManager.bindProcessToNetwork()}) para garantir que o tráfego de rede +seja enviado na rede selecionada.</li> +</ul> + +<h2 id="behavior-camera">Mudanças no serviço de câmera</h2> +<p>Nesta prévia, o modelo para acessar recursos compartilhados no serviço de câmera foi alterado +do antigo modelo de acesso “primeiro a chegar, primeiro a ser atendido” para um modelo de acesso onde +os processos de alta prioridade são favorecidos. As mudanças no comportamento do serviço incluem:</p> +<ul> +<li>Acesso aos recursos do subsistema da câmera, incluindo abertura e configuração de um dispositivo de câmera, +concedido com base na prioridade do processo do aplicativo do cliente. Processos de aplicativos com atividades +visíveis ao usuário ou de primeiro plano são geralmente de alta prioridade, tornando a aquisição +e o uso de recursos da câmera mais dependentes.</li> +<li>Clientes de câmera ativa para aplicativos de menor prioridade podem ser "despejados" quando +um aplicativo de alta prioridade tenta usar a câmera. Na API {@link android.hardware.Camera} obsoleta, +isto resulta em +{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} sendo +chamado para o cliente despejado. Na API {@link android.hardware.camera2 Camera2}, isto resulta em +{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()} +sendo chamado para o cliente despejado.</li> +<li>Em dispositivos com hardware de câmera adequado, processos de aplicativo separados podem +abrir e usar independentemente os dispositivos de câmera simultaneamente. No entanto, casos de uso de vários processos +em que o acesso simultâneo causa uma degradação significante de desempenho ou capacidades +de qualquer um dos dispositivos de câmera abertos agora são detectados e proibidos pelo serviço da câmera. Esta alteração +pode resultar em "despejos" para clientes de menor prioridade quando nenhum aplicativo está +tentando acessar o mesmo dispositivo de câmera diretamente. +</li> +<li> +Alterar o usuário atual faz com que os clientes da câmera ativa em aplicativos pertencentes à conta do usuário anterior +sejam despejados. O acesso à câmera é limitado a perfis de usuário pertencentes ao usuário do dispositivo atual. +Na prática, isso significa que uma conta de "convidado", por exemplo, não poderá deixar +processos em execução que usam o subsistema da câmera quando o usuário alternar para uma conta diferente. +</li> +</ul> + +<h2 id="behavior-art-runtime">Tempo de execução de ART</h2> +<p>O tempo de execução de ART agora implementa adequadamente as regras de acesso +para o método {@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Esta +alteração corrige um problema onde o Dalvik estava verificando as regras de acesso incorretamente em versões anteriores. +Se o aplicativo usa o método +{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} e você quer +substituir as verificações de acesso, chame o método +{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} com o parâmetro +de entrada definido como {@code true}. Se o aplicativo usar a +<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">biblioteca v7 appcompat</a> ou a +<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">biblioteca v7 recyclerview</a>, +deve-se atualizá-lo para usar as versões mais recentes dessas bibliotecas. Caso contrário, certifique-se +de que as classes personalizadas mencionadas a partir do XML sejam atualizadas para que os construtores de classe estejam acessíveis.</p> + +<p>Esta prévia atualiza o comportamento do vinculador dinâmico. O vinculador dinâmico agora entende +a diferença entre um {@code soname} da biblioteca e o seu caminho +(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link"> +erro público 6670</a>), e a pesquisa por {@code soname} +agora está implementada. Os aplicativos que anteriormente trabalhavam e têm entradas {@code DT_NEEDED} inválidas +(geralmente, caminhos absolutos no sistema de arquivo na máquina de programação) podem falhar ao serem carregados.</p> + +<p>O sinalizador {@code dlopen(3) RTLD_LOCAL} agora está corretamente implementado. Observe que +{@code RTLD_LOCAL} é o padrão. Portanto, chamadas para {@code dlopen(3)} que não usam explicitamente +{@code RTLD_LOCAL} serão afetadas (a não ser que o aplicativo tenha usado explicitamente {@code RTLD_GLOBAL}). Com +{@code RTLD_LOCAL}, os símbolos não estarão disponíveis para as bibliotecas carregadas por chamadas posteriores a +{@code dlopen(3)} (o oposto ocorre quando mencionado por entradas {@code DT_NEEDED}).</p> +</p> + +<h2 id="behavior-apk-validation">Validação de APK</h2> +<p>A plataforma agora realiza validações mais estritas de APKs. Um APK é considerado corrompido se um arquivo +for declarado no manifesto, mas não estiver presente no próprio APK. Um APK deve ser atribuído novamente se qualquer +conteúdo for removido.</p> + +<h2 id="behavior-afw">Mudanças do Android for Work</h2> +<p>Esta prévia inclui as seguintes mudanças de comportamento para Android for Work:</p> +<ul> +<li><strong>Contatos de trabalho em contextos pessoais.</strong> O registro de chamadas do telefone do Google +agora exibe os contatos de trabalho quando o usuário visualiza chamadas anteriores. +A configuração {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} para {@code true} oculta +os contatos do perfil de trabalho no registro de chamadas do telefone. Os contatos de trabalho podem ser exibidos junto com os contatos pessoais +aos dispositivos por meio de Bluetooth somente +se {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} estiver definido como {@code false}. Por +padrão, ele está definido como {@code true}. +</li> +<li><strong>Remoção de configuração Wi-Fi:</strong> as configurações de Wi-Fi adicionadas por um dono de perfil +(por exemplo, por meio de chamadas para o método +{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration) +addNetwork()}) agora são removidas se esse perfil de trabalho é excluído.</li> +<li><strong>Bloqueio de configuração Wi-Fi:</strong> qualquer configuração Wi-Fi criada por um dono do dispositivo +ativo não pode mais ser modificada nem excluída pelo usuário. O usuário ainda pode criar +e modificar as próprias configurações de Wi-Fi, contanto que a constante {@link android.os.UserManager} +{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} não tenha sido definida por ele.</li> +<li><strong>Faça o download do Work Policy Controller por meio de uma adição de conta Google:</strong> quando uma conta Google +que requer um gerenciamento por meio do aplicativo Work Policy Controller (WPC) é adicionada ao dispositivo +fora de um contexto gerenciado, o fluxo de conta adicionada agora solicita ao usuário para instalar +o WPC adequado. Este comportamento também se aplica a contas adicionadas por meio de +<strong>Settings (Configurações) > Accounts (Contas)</strong> no assistente de configuração inicial do dispositivo.</li> +<li><strong>Alterações aos comportamentos específicos da API DevicePolicyManager:</strong> +chamar o método {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()} +afeta a câmera somente para o usuário que realizou a chamada. Chamá-lo a partir do perfil gerenciado +não afeta os aplicativos de câmera em execução no usuário principal. Além disso, +o método {@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()} +agora está disponível para donos de perfil, além dos donos do dispositivo. Um dono de perfil pode definir +estas restrições de proteção de bloqueio: +<ul> +<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} e + {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, que afetam + as configurações de proteção de bloqueio para o usuário pai do perfil.</li> +<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, que + afeta somente as notificações geradas por aplicativos no perfil gerenciado.</li> +</ul> +</li> +</ul> |