summaryrefslogtreecommitdiffstats
path: root/docs/html-intl/intl/pt-br/preview
diff options
context:
space:
mode:
authorDavid Friedman <dmail@google.com>2015-06-30 01:51:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-30 01:51:37 +0000
commit9f2e92eebd05d8f37ae5f8383b4a0d63d51a9654 (patch)
treedb128a14d91ffcfcfbe8a828b3e4ad80a13e7f90 /docs/html-intl/intl/pt-br/preview
parent350286e613cdde99f347bd115c406e790a242f87 (diff)
parent4fd1a573eb0724251b5c0986c7f0ae7b36d52369 (diff)
downloadframeworks_base-9f2e92eebd05d8f37ae5f8383b4a0d63d51a9654.zip
frameworks_base-9f2e92eebd05d8f37ae5f8383b4a0d63d51a9654.tar.gz
frameworks_base-9f2e92eebd05d8f37ae5f8383b4a0d63d51a9654.tar.bz2
Merge "Docs: Localized M-Preview pages Bug: 21789313" into mnc-preview-docs
Diffstat (limited to 'docs/html-intl/intl/pt-br/preview')
-rw-r--r--docs/html-intl/intl/pt-br/preview/api-overview.jd521
-rw-r--r--docs/html-intl/intl/pt-br/preview/behavior-changes.jd402
-rw-r--r--docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd794
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/direct-share-screen.pngbin0 -> 57767 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.pngbin0 -> 195946 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.pngbin0 -> 39082 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.pngbin0 -> 127518 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.pngbin0 -> 10205 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.pngbin0 -> 13002 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.pngbin0 -> 161802 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.pngbin0 -> 7785 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/text-selection.gifbin0 -> 212462 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/work-profile-screen.pngbin0 -> 39183 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.pngbin0 -> 126304 bytes
-rw-r--r--docs/html-intl/intl/pt-br/preview/overview.jd362
15 files changed, 2079 insertions, 0 deletions
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd
new file mode 100644
index 0000000..33e8c1f
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/api-overview.jd
@@ -0,0 +1,521 @@
+page.title=Visão geral da API
+page.keywords=preview,sdk,compatibility
+page.tags=previewresources, androidm
+sdk.platform.apiLevel=22-mnc
+page.image=images/cards/card-api-overview_16-9_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento
+ <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+ <span class="more">mostrar mais</span>
+ <span class="less" style="display:none">mostrar menos</span></a></h2>
+
+<ol id="toc44" class="hide-nested">
+ <li><a href="#app-linking">Vínculo de aplicativo</a></li>
+ <li><a href="#backup">Backup automático para aplicativos</a></li>
+ <li><a href="#authentication">Autenticação</a>
+ <ol>
+ <li><a href="#fingerprint-authentication">Autenticação com impressão digital</a></li>
+ <li><a href="#confirm-credential">Confirmação de credencial</a></li>
+ </ol>
+ </li>
+ <li><a href="#direct-share">Compartilhamento direto</a></li>
+ <li><a href="#voice-interactions">Interações por voz</a></li>
+ <li><a href="#assist">Auxiliar API</a></li>
+ <li><a href="#notifications">Notificações</a></li>
+ <li><a href="#bluetooth-stylus">Suporte para Bluetooth Stylus</a></li>
+ <li><a href="#ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</a></li>
+ <li><a href="#hotspot">Suporte a Hotspot 2.0 Release 1</a></li>
+ <li><a href="#4K-display">Modo de exibição 4K</a></li>
+ <li><a href="#behavior-themeable-colorstatelists">ColorStateLists com tema</a></li>
+ <li><a href="#audio">Recursos de áudio</a></li>
+ <li><a href="#video">Recursos de vídeo</a></li>
+ <li><a href="#camera">Recursos de câmera</a>
+ <ol>
+ <li><a href="#flashlight">API da lanterna</a></li>
+ <li><a href="#reprocessing">Reprocessamento da câmera</a></li>
+ </ol>
+ </li>
+ <li><a href="#afw">Recursos 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 &raquo;</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>O M Developer Preview fornece uma visualização avançada no próximo lançamento
+ para a plataforma Android, oferecendo novos recursos para desenvolvedores e usuários
+de aplicativos. Este documento fornece uma introdução às APIs mais notáveis.</p>
+
+<p>O M Developer Preview foi feito para <strong>novos desenvolvedores
+adotantes</strong> e <strong>testadores</strong>. Caso tenha interesse
+ em influenciar a direção da estrutura do Android,
+<a href="{@docRoot}preview/setup-sdk.html">experimente o M Developer
+ Preview</a> e envie-nos feedback!</p>
+
+<p class="caution"><strong>Cuidado:</strong> não publique aplicativos
+que usam o M Developer Preview na Google Play Store.</p>
+
+<p class="note"><strong>Observação:</strong> este documento frequentemente
+menciona classes e métodos que ainda não possuem material de referência disponível em <a href="{@docRoot}">developer.android.com</a>. Esses elementos de API
+são formatados em {@code code style} neste documento (sem hyperlinks). Para a
+documentação de API preliminar destes elementos, faça o download da <a href="{@docRoot}preview/download.html#docs">referência da prévia</a>.</p>
+
+<h3>Alterações importantes de comportamento</h3>
+
+<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado
+pelas alterações na plataforma.</p>
+
+<p>Consulte <a href="behavior-changes.html">alterações de comportamento</a> para obter mais informações.</p>
+
+<h2 id="app-linking">Vínculo de aplicativo</h2>
+<p>Esta prévia aprimora o sistema de intenções do Android fornecendo vínculo de aplicativo mais poderoso.
+Este recurso permite que você associe um aplicativo com um domínio de web próprio. Com base nesta
+associação, a plataforma pode determinar o aplicativo padrão a ser usado para lidar com um link da web
+em particular e ignorar a solicitação aos usuários para selecionar um aplicativo. Para aprender como implementar este aplicativo, consulte
+<a href="{@docRoot}preview/features/app-linking.html">vínculo de aplicativo</a>.
+
+<h2 id="backup">Backup automático para aplicativos</h2>
+<p>O sistema agora realiza backup automático completo de dados e restauração para aplicativos. Este comportamento
+é ativado por padrão para aplicativos com M Preview; não é necessário mais código adicional. Se
+os usuários excluírem as contas da Google, os dados de backup também serão excluídos. Para aprender como este recurso
+funciona e como configurar o backup no sistema do arquivo, consulte
+<a href="{@docRoot}preview/backup/index.html">backup automático para aplicativos</a>.</p>
+
+<h2 id="authentication">Autenticação</h2>
+<p>Esta prévia oferece novas APIs para permitir que você autentique os usuários usando digitalizadores de impressão digital em dispositivos
+suportados e verifique o quão recentemente os usuários autenticaram pela última vez usando o
+mecanismo de desbloqueio por dispositivo (como senha de tela de bloqueio). Use essas APIs em conjunto com
+o <a href="{@docRoot}training/articles/keystore.html">sistema Android Keystore</a>.</p>
+
+<h3 id="fingerprint-authentication">Autenticação com impressão digital</h3>
+
+<p>Para autenticar os usuários por meio de digitalização de impressão digital, adquira uma instância da nova classe
+{@code android.hardware.fingerprint.FingerprintManager} e chame o método
+{@code FingerprintManager.authenticate()}. O aplicativo deve ser executado em um dispositivo
+compatível com sensor de impressão digital. Deve-se implementar a interface do usuário para o fluxo de autenticação
+de impressão digital no aplicativo e usar o ícone de impressão digital padrão do Android na IU.
+O ícone de impressão digital do Android ({@code c_fp_40px.png}) é incluído no
+<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">aplicativo de exemplo</a>. Caso esteja desenvolvendo vários aplicativos que usam
+autenticação de impressão digital, observe que cada aplicativo deve autenticar a impressão digital do usuário independentemente.
+</p>
+
+<p>Para usar este recurso no aplicativo, adicione primeiro a permissão {@code USE_FINGERPRINT} no
+manifesto.</p>
+
+<pre>
+&lt;uses-permission
+ android:name="android.permission.USE_FINGERPRINT" /&gt;
+</pre>
+
+<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
+
+<p>Para ver a implementação do aplicativo da autenticação com impressão digital, consulte o
+<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">
+ exemplo de caixa de diálogo de impressão digital</a>.</p>
+
+<p>Caso esteja testando este recurso, siga estas etapas:</p>
+<ol>
+<li>Instale o Android SDK Tools Revision 24.3, caso ainda não tenha instalado.</li>
+<li>Registre uma nova impressão digital no emulador acessando
+<strong>Configurações &gt; Segurança &gt; Impressão digital</strong> e, em seguida, siga as instruções de registro.</li>
+<li>Use um emulador para emular eventos de toque de dedo com o
+comando a seguir. Use o mesmo comando para emular os eventos de toque de impressão digital na tela de
+bloqueio ou no aplicativo.
+<pre class="no-prettyprint">
+adb -e emu finger touch &lt;finger_id&gt;
+</pre>
+<p>No Windows, talvez seja necessário executar {@code telnet 127.0.0.1 &lt;emulator-id&gt;} seguido de
+{@code finger touch &lt;finger_id&gt;}.
+</p>
+</li>
+</ol>
+
+<h3 id="confirm-credential">Confirmação de credencial</h3>
+<p>O aplicativo pode autenticar os usuários com base no quão recentemente o dispositivo foi desbloqueado pela última vez. Este
+recurso libera o usuário de ter que lembrar de senhas específicas de aplicativo extras e evita
+a necessidade de implementar a própria interface do usuário de autenticação. O aplicativo deve usar este recurso
+em conjunto com uma implementação de chave secreta ou pública para a implementação de usuário.</p>
+
+<p>Para definir uma duração de tempo limite em que a mesma chave pode ser usada novamente
+após o usuário autenticar, chame o novo método
+{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
+ ao definir um {@link javax.crypto.KeyGenerator} ou
+{@link java.security.KeyPairGenerator}. Este recurso funciona para operações criptográficas
+simétricas.</p>
+
+<p>Evite exibir o diálogo de nova autenticação excessivamente — os aplicativos devem tentar
+usar o objeto criptográfico primeiro e, se o tempo limite expirar, usar o método
+{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
+ para autenticar novamente o usuário dentro do aplicativo.
+</p>
+
+<p>Para ver uma implementação de aplicativo deste recurso, consulte o
+<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">
+exemplo de confirmação de credencial</a>.</p>
+
+<h2 id="direct-share">Compartilhamento direto</h2>
+
+<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
+
+<p>Esta prévia fornece as APIs para tornar o compartilhamento intuitivo e rápido para os usuários. É possível
+definir os <em>alvos de compartilhamento direto</em> que iniciam uma atividade específica no aplicativo.
+Esses alvos de compartilhamento direto são expostos aos usuários por meio do menu <em>Compartilhar</em>. Este recurso permite que os usuários
+compartilhem conteúdos aos alvos, como contatos, dentro de outros aplicativos. Por exemplo: o alvo de compartilhamento direto
+pode iniciar uma atividade em outro aplicativo de rede social, o que permite que o usuário compartilhe o conteúdo diretamente
+para um amigo ou comunidade específica neste aplicativo.</p>
+
+<p>Para ativar os alvos de compartilhamento direto, deve-se definir uma classe que estende a classe
+{@code android.service.} <br>
+{@code chooser.ChooserTargetService}. Declare o
+{@code ChooserTargetService} no manifesto. Dentro desta declaração, especifique a permissão
+{@code BIND_CHOOSER_TARGET_SERVICE} e um filtro de intenções na ação
+{@code SERVICE_INTERFACE}.</p>
+<p>O seguinte exemplo mostra como se deve declarar o {@code ChooserTargetService} no
+manifesto.</p>
+<pre>
+&lt;service android:name=".ChooserTargetService"
+ android:label="&#64;string/service_name"
+ android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
+ &lt;intent-filter&gt;
+ &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
+ &lt;/intent-filter&gt;
+&lt;/service&gt;
+</pre>
+
+<p>Para cada atividade que quiser expor ao {@code ChooserTargetService}, adicione um elemento
+{@code &lt;meta-data&gt;} com o nome
+{@code "android.service.chooser.chooser_target_service"} no manifesto do aplicativo.
+</p>
+
+<pre>
+&lt;activity android:name=".MyShareActivity”
+ android:label="&#64;string/share_activity_label"&gt;
+ &lt;intent-filter>
+ &lt;action android:name="android.intent.action.SEND" /&gt;
+ &lt;/intent-filter>
+&lt;meta-data
+ android:name="android.service.chooser.chooser_target_service"
+ android:value=".ChooserTargetService" /&gt;
+&lt;/activity>
+</pre>
+
+<h2 id="voice-interactions">Interações por voz</h2>
+<p>
+Esta prévia fornece uma API de interação por voz que, junto com
+<a href="https://developers.google.com/voice-actions/" class="external-link">ações de voz</a>
+, permite a criação de experiências por voz nos aplicativos. Chame o método
+{@code android.app.Activity.isVoiceInteraction()} para determinar se a atividade
+foi iniciada em resposta à ação de voz. Caso tenha sido iniciada, o aplicativo pode usar a classe
+{@code android.app.VoiceInteractor} para solicitar uma confirmação de voz do usuário,
+selecionar a partir de uma lista de opções e muito mais. Para aprender mais sobre a implementação de ações de voz, consulte
+<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">o site de desenvolvedor de ações de voz</a>.
+</p>
+
+<h2 id="assist">Auxiliar API</h2>
+<p>
+Esta prévia oferece uma nova maneira de usuários se envolverem com os aplicativos com um assistente. Para usar este
+recurso, o usuário deve possibilitar que o assistente use o contexto atual. Quando ativado,
+o usuário pode invocar um assistente dentro de qualquer aplicativo mantendo o botão <strong>Iniciar</strong> pressionado.</p>
+<p>O aplicativo pode optar por não compartilhar o contexto atual com o assistente configurando o sinalizador
+{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Além do conjunto
+padrão de informações que a plataforma passa ao assistente, o aplicativo pode compartilhar
+informações adicionais usando a nova classe {@code android.app.Activity.AssistContent}.</p>
+
+<p>Para fornecer ao assistente contexto adicional do aplicativo, siga estas etapas:</p>
+
+<ol>
+<li>Implemente a interface {@link android.app.Application.OnProvideAssistDataListener}.</li>
+<li>Registre esta escuta usando
+{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
+<li>Para fornecer informações contextuais específicas da atividade, substitua o retorno de chamada
+{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
+ e, opcionalmente, o novo retorno de chamada {@code Activity.onProvideAssistContent()}.
+</ol>
+
+<h2 id="notifications">Notificações</h2>
+<p>Esta prévia adiciona as seguintes alterações de API às notificações:</p>
+<ul>
+ <li>Novo nível de filtro {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} que corresponde
+ao modo "não perturbe" de <em>despertadores apenas</em>.</li>
+ <li>Novo valor da categoria {@code Notification.CATEGORY_REMINDER} que é usado para distinguir
+lembretes de agendamentos do usuário de outros eventos (
+{@link android.app.Notification#CATEGORY_EVENT}) e despertadores (
+{@link android.app.Notification#CATEGORY_ALARM}).</li>
+ <li>Nova classe {@code android.graphics.drawable.Icon} que pode ser anexada às notificações
+por meio dos métodos {@code Notification.Builder.setSmallIcon(Icon)} e
+{@code Notification.Builder.setLargeIcon(Icon)}.</li>
+ <li>Novo método {@code NotificationManager.getActiveNotifications()} que permite que os aplicativos
+descubram quais das notificações ainda estão ativas. Para ver uma implementação de aplicativo que usa este recurso,
+consulte o <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">exemplo de notificações ativas</a>.</li>
+</ul>
+
+<h2 id="bluetooth-stylus">Suporte para Bluetooth Stylus</h2>
+<p>Esta prévia fornece um suporte aprimorado para a entrada de usuário usando um Bluetooth Stylus. Os usuários podem
+parear e conectar um Bluetooth Stylus compatível com o telefone ou tablet. Quando conectado, as informações
+de posição da tela tátil são fundidas com as informações de botão e pressão do Stylus
+para fornecer um alcance maior de expressão em comparação à tela tátil sozinha. O aplicativo pode escutar o pressionar
+de botões do Stylus e realizar ações secundárias registrando os novos retornos de chamada
+{@code View.onStylusButtonPressListener} e {@code GestureDetector.OnStylusButtonPressListener}
+ na atividade.</p>
+
+<p>Use as constantes e os métodos {@link android.view.MotionEvent} para detectar as interações
+de botão do Stylus:</p>
+<ul>
+<li>Se o usuário toca no Stylus com um botão na tela do aplicativo, o método
+{@link android.view.MotionEvent#getToolType(int) getTooltype()} retorna
+{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
+<li>Para aplicativos com M Preview, o método
+{@link android.view.MotionEvent#getButtonState() getButtonState()}
+ retorna {@code MotionEvent.STYLUS_BUTTON_PRIMARY} quando o usuário
+pressiona o botão principal do Stylus. Se o Stylus tiver um segundo botão, o mesmo método retorna
+{@code MotionEvent.STYLUS_BUTTON_SECONDARY} quando o usuário o pressiona. Se o usuário pressiona
+os dois botões simultaneamente, o método retorna os valores com OR juntos (
+{@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li>
+<li>
+Para aplicativos com uma versão de plataforma inferior , o método
+{@link android.view.MotionEvent#getButtonState() getButtonState()} retorna
+{@link android.view.MotionEvent#BUTTON_SECONDARY} (para o pressionar do botão principal do Stylus),
+{@link android.view.MotionEvent#BUTTON_TERTIARY} (para o pressionar do botão secundário do Stylus) ou ambos.
+</li>
+</ul>
+
+<h2 id="ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</h2>
+<p>
+Se o aplicativo realizar digitalizações de baixa energia por Bluetooth, é possível usar o novo método
+{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar
+que você quer que os retornos de chamada sejam notificados apenas quando um pacote de propaganda correspondente ao conjunto
+{@link android.bluetooth.le.ScanFilter} for encontrado primeiro e quando
+ele não for visto por um período. Esta abordagem de digitalização é mais eficiente
+do que a fornecida na versão anterior da plataforma.
+</p>
+
+<h2 id="hotspot">Suporte a Hotspot 2.0 Release 1</h2>
+<p>
+Esta prévia adiciona suporte ao Hotspot 2.0 Release 1 nos dispositivos Nexus 6 e Nexus 9. Para fornecer
+as credenciais de Hotspot 2.0 no aplicativo, use os novos métodos da classe
+{@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} e
+{@code setRealm()}. No objeto {@link android.net.wifi.WifiConfiguration}, é possível definir os campos
+{@link android.net.wifi.WifiConfiguration#FQDN} e {@code providerFriendlyName}.
+A nova propriedade {@code ScanResult.PasspointNetwork} indica se uma rede detectada representa
+um ponto de acesso Hotspot 2.0.
+</p>
+
+<h2 id="4K-display">Modo de exibição 4K</h2>
+<p>A plataforma agora permite que aplicativos solicitem que a resolução seja aprimorada para renderização 4K
+em hardware compatível. Para consultar a resolução física atual, use as novas APIs
+{@code android.view.Display.Mode}. Se a IU for desenhada em uma resolução lógica
+menor e for redimensionada para uma resolução física maior, saiba que a resolução física que o método
+{@code Display.Mode.getPhysicalWidth()} retorna pode ser diferente da resolução
+física informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.</p>
+
+<p>É possível solicitar que o sistema altere a resolução física no aplicativo à medida que ele é executado configurando
+a propriedade {@code WindowManager.LayoutParams.preferredDisplayModeId} da janela do aplicativo. Este
+recurso é útil se quiser alternar para a resolução de exibição 4K. Enquanto estiver no modo de exibição 4K,
+a IU continua a ser renderizada na resolução original (como 1080 p) e é escalonada para 4K, mas os objetos
+{@link android.view.SurfaceView} podem exibir o conteúdo na resolução nativa.</p>
+
+<h2 id="behavior-themeable-colorstatelists">ColorStateLists com tema</h2>
+<p>Os atributos de tema agora são suportados no
+{@link android.content.res.ColorStateList} para dispositivos que executam o M Preview. Os métodos
+{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} e
+{@link android.content.res.Resources#getColor(int) getColor()} ficaram obsoletos. Caso esteja chamando
+essas APIs, chame os novos métodos {@code Context.getColorStateList()} ou
+{@code Context.getColor()}. Esses métodos também estão disponíveis na biblioteca
+v4 appcompat via {@link android.support.v4.content.ContextCompat}.</p>
+
+<h2 id="audio">Recursos de áudio</h2>
+
+<p>Esta prévia adiciona aprimoramentos ao processamento de áudio no Android, incluindo: </p>
+<ul>
+ <li>Suporte para protocolo <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
+, com as novas APIs {@code android.media.midi}. Use essas APIs para enviar e receber eventos
+de MIDI.</li>
+ <li>Use as novas classes {@code android.media.AudioRecord.Builder} e {@code android.media.AudioTrack.Builder}
+ para criar captura de áudio digital e objetos de reprodução, respectivamente,
+e configure a fonte de áudio e as propriedades do coletor para substituir os padrões do sistema.</li>
+ <li>Ganchos de API para associação de dispositivos de entrada e áudio. Isto é particularmente útil se o aplicativo
+permite que os usuários iniciem uma pesquisa de voz a partir de um controle de jogo ou controle remoto para Android
+TV. O sistema invoca o novo retorno de chamada {@code android.app.Activity.onSearchRequested()} quando
+o usuário inicia uma pesquisa. Para determinar se o dispositivo de entrada do usuário tem um microfone integrado, recupere
+o objeto {@link android.view.InputDevice} deste retorno de chamada e, em seguida, chame o novo método
+{@code InputDevice.hasMic()}.</li>
+ <li>Novas classes {@code android.media.AudioDevicesManager} que permitem que você
+recupere uma lista completa de todas as fontes e dispositivos de áudio do coletor anexados. Também é possível especificar um objeto
+{@code android.media.OnAudioDeviceConnectionListener} caso queira que o aplicativo seja notificado
+quando um dispositivo de áudio for conectado ou desconectado.</li>
+</ul>
+
+<h2 id="video">Recursos de vídeo</h2>
+<p>Esta prévia adiciona novas capacidades às APIs de processamento de vídeo, incluindo:</p>
+<ul>
+<li>A nova classe {@code android.media.MediaSync} que ajuda os aplicativos a renderizar transmissões
+de vídeo e áudio sincronizadamente. Os buffers de áudio são enviados sem bloqueio e retornados
+por um retorno de chamada. Eles também suportam taxa de reprodução dinâmica.
+</li>
+<li>O novo evento {@code MediaDrm.EVENT_SESSION_RECLAIMED}, que indica que uma sessão aberta pelo aplicativo
+foi recuperada pelo gerenciador de recursos. Se o aplicativo usa sessões de DRM, deve-se
+lidar com este evento e garantir que uma sessão recuperada não seja usada.
+</li>
+<li>O novo código de erro {@code MediaCodec.CodecException.ERROR_RECLAIMED}, que indica que o gerenciador
+de recurso recuperou o recurso de mídia usado pelo codec. Com esta exceção, o codec
+deve ser liberado, como se fosse movido para o estado terminal.
+</li>
+<li>A nova interface {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} para obter
+uma dica do número máximo suportado de instâncias de codec concorrentes.
+</li>
+<li>O novo método {@code MediaPlayer.setPlaybackParams()} para definir a taxa de reprodução de mídia
+para reprodução de movimento lento ou rápido. Ele também estica ou acelera a reprodução de áudio automaticamente
+em conjunto com o vídeo.</li>
+</ul>
+
+<h2 id="camera">Recursos de câmera</h2>
+<p>Esta prévia inclui as seguintes novas APIs para acessar a lanterna da câmera
+e para o reprocessamento da câmera de imagens:</p>
+
+<h3 id="flashlight">API da lanterna</h3>
+<p>Se um dispositivo de câmera tem uma unidade de flash, é possível chamar o método {@code CameraManager.setTorchMode()}
+para ligar ou desligar o modo de tocha da unidade de flash sem abrir o dispositivo da câmera. O aplicativo
+não tem propriedade exclusiva da unidade de flash ou do dispositivo de câmera. O modo de tocha é desativado
+e torna-se indisponível sempre que o dispositivo de câmera estiver indisponível ou quando outros
+recursos de câmera que mantêm a tocha ativada ficam indisponíveis. Outros aplicativos também podem chamar {@code setTorchMode()}
+para desativar o modo de tocha. Quando o aplicativo que ativou o modo
+de tocha for fechado, o modo é desativado.</p>
+
+<p>É possível registrar um retorno de chamada para ser notificado sobre o estado da tocha chamando o método
+{@code CameraManager.registerTorchCallback()}. Na primeira vez que o retorno de chamada é registrado,
+ele é imediatamente chamado com o estado do modo de tocha de todos os dispositivos de câmera conhecidos com
+uma unidade de flash. Se o modo de tocha é ativado ou desativado, o método
+{@code CameraManager.TorchCallback.onTorchModeChanged()} é invocado.</p>
+
+<h3 id="reprocessing">API de reprocessamento</h3>
+<p>A API {@link android.hardware.camera2 Camera2} é estendida para suportar YUV e reprocessamento
+de imagem de formato opaco privado. O aplicativo determina se as capacidades de reprocessamento estão disponíveis
+via {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Se um dispositivo suporta o reprocessamento,
+é possível criar uma sessão de captura de câmera de reprocessamento chamando
+{@code CameraDevice.createReprocessableCaptureSession()} e criando solicitações para o reprocessamento
+do buffer de entrada.</p>
+
+<p>Use a classe {@code ImageWriter} para conectar o fluxo de buffer de entrada à entrada de reprocessamento
+da câmera. Para obter um buffer vazio, siga este modelo de programação:</p>
+
+<ol>
+<li>Chame o método {@code ImageWriter.dequeueInputImage()}.</li>
+<li>Preencha os dados no buffer de entrada.</li>
+<li>Envie o buffer à câmera chamando o método {@code ImageWriter.queueInputImage()}.</li>
+</ol>
+
+<p>Caso esteja usando um objeto {@code ImageWriter} junto com uma imagem
+{@code android.graphics.ImageFormat.PRIVATE}, o aplicativo não poderá acessar os dados
+da imagem diretamente. Em vez disso, passe a imagem {@code ImageFormat.PRIVATE} diretamente ao
+{@code ImageWriter} chamando o método {@code ImageWriter.queueInputImage()} sem nenhuma
+cópia de buffer.</p>
+
+<p>A classe {@code ImageReader} agora suporta as transmissões de imagem
+de formato {@code android.graphics.ImageFormat.PRIVATE}. Este suporte permite que o aplicativo mantenha uma fila de imagem circular de imagens de saída
+{@code ImageReader}, selecione uma ou mais imagens e envie-as para
+{@code ImageWriter} para o reprocessamento de câmera.</p>
+
+<h2 id="afw">Recursos do Android for Work</h2>
+<p>Esta prévia inclui as seguintes novas APIs para Android for Work:</p>
+<ul>
+ <li><strong>Controles aprimorados para dispositivos de uso único e pertencentes a empresas:</strong> O dono do dispositivo
+pode controlar as seguintes configurações para aprimorar
+os dispositivos de uso único pertencentes a empresas (COSU):
+ <ul>
+ <li>Desativar ou reativar a proteção de bloqueio com o método
+{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
+ <li>Desativar ou reativar a barra de status (incluindo configurações rápidas,
+notificações e o gesto de arrastar para cima que inicia o Google Now) com o método
+{@code DevicePolicyManager.setStatusBarEnabledState()}.</li>
+ <li>Desativar ou reativar inicialização segura com a constante {@link android.os.UserManager}
+{@code DISALLOW_SAFE_BOOT}.</li>
+ <li>Evitar que a tela desligue quando conectada com a constante
+{@link android.provider.Settings.Global} {@code STAY_ON_WHILE_PLUGGED_IN}.</li>
+ </ul>
+ </li>
+ <li><strong>Instalação e desinstalação silenciosa de aplicativos pelo dono do dispositivo:</strong> O dono do dispositivo pode agora
+instalar e desinstalar aplicativos silenciosamente usando as APIs {@link android.content.pm.PackageInstaller},
+independente do Google Play for Work. É possível tomar providências para os dispositivos
+por meio de um dono do dispositivo que recupera e instala aplicativos se a interação de usuário. Este recurso é útil para ativar a provisão de um toque
+de telefones públicos ou de outros dispositivos sem a ativação da conta Google.</li>
+<li><strong>Acesso silencioso de certificado empresarial: </strong> Quando um aplicativo chama
+{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()}
+, antes do usuário receber a solicitação para selecionar um certificado, o perfil ou dono do dispositivo
+pode chamar o método {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} para fornecer
+o alias silenciosamente ao aplicativo da solicitação. Este recurso permite que você forneça acesso de aplicativos gerenciados para certificados
+sem a interação de usuário.</li>
+<li><strong>Aceitação automática de atualizações do sistema.</strong> Ao configurar a política de atualização do sistema com
+{@code DevicePolicyManager.setSystemUpdatePolicy()}, o dono do dispositivo pode aceitar automaticamente a atualização
+do sistema, no caso de um dispositivo público, ou adiar a atualização e evitar
+que ela seja feita pelo usuário por até 30 dias. Além disso, um administrador pode definir uma janela de tempo diária
+em que uma atualização deve ser realizada. Por exemplo: durante os momentos em que um dispositivo público não está em uso. Quando
+uma atualização do sistema está disponível, o sistema verifica se o aplicativo de controlador de política de trabalho definiu uma política de atualização
+do sistema e, portanto, comporta-se de acordo com a definição.
+</li>
+<li>
+<strong>Instalação de certificado delegado:</strong> Um perfil ou dono do dispositivo pode agora fornecer ao aplicativo
+de terceiros a habilidade de chamar essas APIs de gerenciamento
+de certificado de {@link android.app.admin.DevicePolicyManager}:
+<ul>
+ <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
+getInstalledCaCerts()}</li>
+ <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
+hasCaCertInstalled()}</li>
+ <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
+installCaCert()}</li>
+ <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
+uninstallCaCert()}</li>
+ <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
+uninstallAllUserCaCerts()}</li>
+ <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
+installKeyPair()}</li>
+</ul>
+</li>
+<li><strong>Proteção de redefinição de fábrica da empresa:</strong> Ao preparar um dono do dispositivo, agora é possível
+configurar parâmetros para desbloquear a proteção de redefinição de fábrica (FRP) configurando o pacote
+{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Um aplicativo de programador
+NFC pode fornecer estes parâmetros depois que um dispositivo for redefinido para desbloquear o FRP e preparar o dispositivo,
+sem a necessidade da conta Google anteriormente configurada. Caso não modifique esses parâmetros,
+o FRP permanece no local e evita que o dispositivo seja ativado sem as credenciais
+Google anteriormente ativadas.
+<p>Além disso, ao configurar as restrições do aplicativo nos serviços Google, o dono do dispositivo pode especificar contas
+Google alternativas para desbloquear o FRP para substituir as contas ativadas no dispositivo.</p>
+</li>
+<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
+<li><strong>Rastreamento de uso de dados.</strong> Um perfil ou dono do dispositivo pode agora
+consultar as estatísticas de uso de dados visíveis em <strong>Configurações &gt; Uso de</strong> dados usando os novos métodos
+{@code android.app.usage.NetworkStatsManager}. Os donos de perfis recebem automaticamente
+a permissão para consultar os dados no perfil que gerenciam, enquanto que os donos do dispositivo têm acesso aos dados
+de uso do usuário principal gerenciado.</li>
+<li><strong>Gerenciamento de permissão de tempo de execução:</strong>
+<p>Um perfil ou dono do dispositivo pode definir uma política
+de permissão para todas as solicitações do tempo de execução de todos os aplicativos que usam
+{@code DevicePolicyManager.setPermissionPolicy()}, seja para solicitar ao usuário para conceder
+a permissão como normal ou automaticamente conceder ou negar a permissão silenciosamente. Se a política posterior
+for definida, o usuário não poderá modificar a seleção feita pelo perfil ou dono do dispositivo dentro da tela de permissões
+do aplicativo em <strong>configurações</strong>.</p></li>
+<li><strong>VPN em configurações:</strong> Os aplicativos de VPN agora estão visíveis em
+<strong>Configurações &gt; Mais &gt; VPN</strong>.
+Além disso, as notificações que acompanham o uso de VPN são específicas sobre como essa VPN
+é configurada. Para o dono de um perfil, as notificações são específicas para determinar
+se a VPN é configurada para um perfil gerenciado, um perfil pessoal ou ambos. Para o dono do dispositivo, as notificações
+são específicas para determinar se a VPN é configurada para todo o dispositivo.</li>
+<li><strong>Notificação de estado de trabalho:</strong> Um ícone de pasta da barra de status agora aparece
+sempre que um aplicativo do perfil gerenciado tiver uma atividade no primeiro plano. Além disso, se o usuário é desbloqueado
+diretamente para a atividade de um aplicativo no perfil gerenciado, um aviso é exibido notificando
+ao usuário que ele está dentro do perfil de trabalho.
+</li>
+</ul>
+
+<p class="note">
+ Para obter uma vista detalhada de todas as alterações de API no M Developer Preview, consulte o <a href="{@docRoot}preview/download.html">relatório de diferenças de API</a>.
+</p>
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 &raquo;</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 &lt;packageName&gt; true
+$ adb shell am set-idle &lt;packageName&gt; false
+$ adb shell am get-idle &lt;packageName&gt;
+</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) &gt; 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>
diff --git a/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd b/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd
new file mode 100644
index 0000000..762e1ae
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd
@@ -0,0 +1,794 @@
+page.title=Permissões
+page.tags=previewresources, androidm
+page.keywords=permissions, runtime, preview
+page.image={@docRoot}preview/images/permissions_check.png
+@jd:body
+
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>Visualização rápida</h2>
+ <ul>
+ <li>Se o aplicativo direciona o M Preview SDK, ele indica aos usuários para conceder
+ permissões no tempo de execução, em vez de tempo de instalação.</li>
+ <li>Os usuários podem revogar as permissões a qualquer momento na tela de configurações
+do aplicativo.</li>
+ <li>O aplicativo precisa verificar se tem as permissões necessárias
+sempre que for executado.</li>
+ </ul>
+
+ <h2>Neste documento</h2>
+ <ol>
+ <li><a href="#overview">Visão geral</a></li>
+ <li><a href="#coding">Codificação para permissões de tempo de execução</a></li>
+ <li><a href="#testing">Teste de permissões de tempo de execução</a></li>
+ <li><a href="#best-practices">Práticas recomendadas</a></li>
+ </ol>
+
+<!--
+ <h2>Related Samples</h2>
+ <ol>
+ <li></li>
+ </ol>
+-->
+
+<!--
+ <h2>See also</h2>
+ <ol>
+ <li></li>
+ </ol>
+-->
+ </div> <!-- qv -->
+</div> <!-- qv-wrapper -->
+
+
+<p>
+ O M Developer Preview introduz um novo modelo de permissões de aplicativo
+que agiliza o processo de instalação e atualização de aplicativos para os usuários. Se um aplicativo
+ que está sendo executado no M Preview suporta o novo modelo de permissões, o usuário não precisa conceder
+ permissões ao instalar ou atualizar o aplicativo. Em vez disso, o aplicativo
+ solicita as permissões à medida que precisar e o sistema exibe um diálogo
+ ao usuário pedindo a permissão.
+</p>
+
+<p>
+ Se um aplicativo suportar o novo modelo de permissões, ele
+ ainda poderá ser instalado e executado em versões mais antigas do Android, usando o antigo modelo
+ de permissões nesses dispositivos.
+</p>
+
+<h2 id="overview">
+ Visão geral
+</h2>
+
+<p>
+ Com o M Developer Preview, a plataforma introduz um novo modelo
+ de permissões. Eis um resumo dos componentes essenciais deste novo modelo:
+</p>
+
+<ul>
+ <li>
+ <strong>Declaração de permissões:</strong> O aplicativo declara todas
+ as permissões necessárias no manifesto, como nas plataformas anteriores do Android.
+ </li>
+
+ <li>
+ <strong>Grupos de permissão:</strong> As permissões são divididas em
+<em>grupos de permissão</em>, baseados na funcionalidade. Por exemplo: o grupo de permissão
+ <code>CONTACTS</code> contém permissões para ler e escrever
+ informações de perfil e contatos do usuário.
+ </li>
+
+ <li>
+ <p><strong>Permissões limitadas concedidas no tempo de instalação:</strong> Quando o usuário
+ instala ou atualiza o aplicativo, o sistema concede todas
+ as permissões que o aplicativo solicita que estão em {@link
+ android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
+ Por exemplo: as permissões de internet e despertador estão em {@link
+ android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}. Portanto,
+ as permissões são concedidas automaticamente no tempo de instalação.
+ </p>
+
+ <p>O sistema pode também conceder as permissões de sistema e assinatura de aplicativo,
+ como descrito em <a href="#system-apps">permissões de assinatura
+ e aplicativos do sistema</a>. O usuário <em>não</em> é alertado a conceder permissões
+ no tempo de instalação.</p>
+ </li>
+
+ <li>
+ <strong>O usuário concede permissões no tempo de execução:</strong> Quando um aplicativo solicita
+ uma permissão, o sistema exibe um diálogo ao usuário e, em seguida,
+ chama a função de retorno de chamada do aplicativo para notificá-lo se a permissão foi concedida. Se um
+ usuário concede uma permissão, o aplicativo recebe todas
+ as permissões na área funcional desta permissão que foram declaradas no manifesto do aplicativo.
+ </li>
+
+</ul>
+
+<p>
+ Este modelo de permissões altera a forma como o aplicativo se comporta diante os recursos
+ que precisam de permissões. Eis um resumo das práticas de desenvolvimento que devem
+ ser seguidas para ajustar para este modelo:
+</p>
+
+<ul>
+
+ <li>
+ <strong>Sempre verificar as permissões:</strong> Quando o aplicativo
+ precisa realizar uma ação que requer uma permissão, ele deve primeiro verificar
+ se já a tem. Caso não tenha, ele solicita
+ o concedimento desta permissão.
+ </li>
+
+ <li>
+ <strong>Lidar com falta de permissões dignamente:</strong> Se o aplicativo não
+ recebe a permissão adequada, ele deve lidar com a falha de forma limpa.
+ Por exemplo, se a permissão é necessária para um recurso adicionado,
+ o aplicativo pode desativar este recurso. Se a permissão for essencial
+ para que o aplicativo funcione, ele desativará toda sua funcionalidade
+ e informará ao usuário que precisa desta permissão.
+ </li>
+
+ <div class="figure" style="width:220px" id="fig-perms-screen">
+ <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
+ <p class="img-caption">
+ <strong>Figura 1.</strong> Tela de permissões nas configurações do aplicativo.
+ </p>
+ </div>
+
+ <li>
+ <strong>As permissões são revogáveis:</strong> Os usuários podem revogar as permissões
+ de um aplicativo a qualquer momento. Se um usuário desativar as permissões de um aplicativo,
+ o aplicativo <em>não</em> é notificado. Novamente, o aplicativo deve verificar
+ se tem todas as permissões necessárias antes de realizar qualquer ação restrita.
+ </li>
+</ul>
+
+<p class="note">
+ <strong>Observação:</strong> se um aplicativo direcionar o M Developer Preview, ele
+ <em>deve</em> usar o novo modelo de permissões.
+</p>
+
+<p>
+ No momento do lançamento do M Developer Preview,
+ nem todos os aplicativos Google implementam completamente o novo modelo de permissões. A Google está atualizando estes aplicativos
+ durante o curso do M Developer Preview para respeitar adequadamente a configuração
+ de alternação de permissões.
+</p>
+
+<p class="note">
+ <strong>Observação:</strong> se o aplicativo tiver a própria superfície de API,
+ não represente permissões sem antes garantir que o autor da chamada tenha as permissões necessárias
+ para acessar esses dados.
+</p>
+
+<h3 id="system-apps">
+ Permissões de assinatura e aplicativos do sistema
+</h3>
+
+<p>
+ Geralmente, quando um usuário instala um aplicativo, o sistema somente fornece ao aplicativo o
+ {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
+ PROTECTION_NORMAL}. No entanto, sob algumas circunstâncias, o sistema concede
+ ao aplicativo mais permissões:
+</p>
+
+<ul>
+ <li>Se um aplicativo faz parte da imagem do sistema, ele recebe automaticamente
+ todas as permissões listadas no manifesto.
+ </li>
+
+ <li>Se o aplicativo solicitar as permissões no manifesto que está em {@link
+ android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE},
+ e estiver assinado com o mesmo certificado que o aplicativo que declarou essas permissões,
+ o sistema concederá essas permissões na instalação ao aplicativo
+ que fez a solicitação.
+ </li>
+</ul>
+
+<p>
+ Em ambos os casos, o usuário ainda pode revogar as permissões a qualquer
+ momento acessando a tela de <strong>configurações</strong> do sistema e escolhendo <strong>Aplicativos
+ &gt;</strong> <i>app_name</i> <strong>&gt; Permissões</strong>. O aplicativo
+ deve continuar com a verificação das permissões no tempo de execução e solicitá-las
+ se necessário.
+</p>
+
+<h3 id="compatibility">
+ Compatibilidade anterior e posterior
+</h3>
+
+<p>
+ Se um aplicativo não direciona para o M Developer Preview, ele deve continuar a usar
+ o modelo antigo de permissões mesmo nos dispositivos M Preview. Quando o usuário instala
+ o aplicativo, o sistema pede para que ele conceda todas as permissões
+ listadas no manifesto do aplicativo.
+</p>
+
+<p class="note">
+ <strong>Observação:</strong> em dispositivos que são executados no M Developer Preview,
+ um usuário pode desativar as permissões para qualquer aplicativo (incluindo aplicativos de legado)
+ na tela de configurações do aplicativo. Se um usuário desativa as permissões de um aplicativo de legado, o sistema
+ silenciosamente desativa a funcionalidade adequada. Quando um aplicativo tentar realizar
+ uma operação que requer esta permissão, a operação não necessariamente causará
+ uma exceção. Em vez disso, ele retornará um conjunto de dados vazio,
+ sinalizará um erro ou exibirá um comportamento inesperado. Por exemplo, caso queira
+ consultar um calendário sem permissão, o método retorna um conjunto de dados vazio.
+</p>
+
+<p>
+ Se instalar um aplicativo usando o novo modelo de permissões em um dispositivo
+ que não está executando o M Preview,
+ o sistema o tratará da mesma forma que qualquer outro aplicativo: o sistema pedirá
+ para que o usuário conceda todas as permissões declaradas no momento da instalação.
+</p>
+
+<p class="note">
+ <strong>Observação:</strong> para a liberação de prévia, deve-se definir a versão mínima de SDK
+ para o M Preview SDK para compilar com o SDK de prévia. Isto significa que você
+ não poderá testar tais aplicativos em plataformas mais antigas durante a prévia
+ de desenvolvedor.
+</p>
+
+<h3 id="perms-vs-intents">Permissões versus intenções</h3>
+
+<p>
+ Em vários casos, é possível escolher entre duas maneiras para que o aplicativo realize
+ uma tarefa. É possível fazer com que o aplicativo solicite uma permissão para realizar a operação
+ por conta própria. Alternativamente, é possível fazer com que o aplicativo use uma intenção para que outro aplicativo
+ realize a tarefa.
+</p>
+
+<p>
+ Por exemplo, imagine que o aplicativo precisa da função de tirar fotos com
+ a câmera do dispositivo. O aplicativo pode solicitar a permissão
+<code>android.permission.CAMERA</code>, que permite que ele acesse
+ a câmera diretamente. O aplicativo então usará as APIs da câmera
+ para controlar a câmera e tirar uma foto. Esta abordagem fornece ao aplicativo
+ controle completo sobre o processo de fotografia e permite
+ que você incorpore a IU da câmera.
+</p>
+
+<p>
+ No entanto, caso não precise de tal controle, é possível apenas usar uma intenção {@link
+ android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE}
+ para solicitar uma imagem. Ao iniciar a intenção, o usuário deve escolher
+ um aplicativo de câmera (se não houver um aplicativo padrão de câmera)
+ para tirar a foto. O aplicativo da câmera retorna a imagem ao método {@link
+ android.app.Activity#onActivityResult onActivityResult()} do aplicativo.
+</p>
+
+<p>
+ De forma semelhante, caso precise realizar uma ligação,
+ acessar os contatos do usuário etc., é possível fazer estas ações criando uma intenção adequada
+ ou solicitar a permissão e o acesso aos objetos adequados diretamente. Essas são
+ as vantagens e desvantagens de cada abordagem.
+</p>
+
+<p>
+ Se usar permissões:
+</p>
+
+<ul>
+ <li>O aplicativo tem controle completo sobre a experiência do usuário ao realizar
+ a operação. No entanto, esse controle amplo é adicionado à complexidade da tarefa,
+ levando em consideração a necessidade de projetar uma IU adequada.
+ </li>
+
+ <li>O usuário deve fornecer a permissão uma vez: na primeira realização
+ da operação. Depois, o aplicativo pode realizar a operação sem
+ precisar de mais interações do usuário. No entanto,
+ se o usuário não conceder a permissão (ou revogá-la posteriormente),
+ o aplicativo não conseguirá realizar a operação.
+ </li>
+</ul>
+
+<p>
+ Se usar uma intenção:
+</p>
+
+<ul>
+ <li>Você não terá que projetar a IU para a operação. O aplicativo que lida com
+ a intenção fornece a IU. No entanto, isso significa que você não terá controle
+ completo sobre a experiência de usuário. O usuário poderá interagir com um aplicativo
+ que você nunca viu.
+ </li>
+
+ <li>Se o usuário não tem um aplicativo padrão para a operação,
+ o sistema pede para que o usuário escolha um aplicativo.
+ Se o usuário não designar um manipulador padrão,
+ ele terá que acessar uma caixa de diálogo extra sempre que realizar a operação.
+ </li>
+</ul>
+
+<h2 id="coding">Codificação para permissões de tempo de execução</h2>
+
+<p>
+ Se um aplicativo direciona o novo M Developer Preview, ele deve usar o novo
+ modelo de permissões. Isto significa que, além de declarar as permissões necessárias no manifesto,
+ deve-se também verificar se o aplicativo
+ tem as permissões no tempo de execução e,
+ caso ainda não as tenha, solicitá-las.
+</p>
+
+<h3 id="enabling">
+ Possibilitar um novo modelo de permissões
+</h3>
+
+<p>
+ Para possibilitar o modelo de permissões do M Developer Preview, configure o atributo
+<code>targetSdkVersion</code> do aplicativo para <code>"MNC"</code> e
+<code>compileSdkVersion</code> para <code>"android-MNC"</code>. Isto ativará
+ todos os novos recursos de permissão.
+</p>
+
+<p>
+ Para a liberação de uma prévia, deve-se definir <code>minSdkVersion</code> para
+<code>"MNC"</code> para compilar com o SDK de prévia.
+</p>
+
+<h3 id="m-only-perm">
+ Designar uma permissão somente para o M Preview
+</h3>
+
+<p>
+ É possível usar o novo elemento <code>&lt;uses-permission-sdk-m&gt;</code> no manifesto do aplicativo
+ para indicar que uma permissão é necessária apenas no M Developer Preview. Se você
+ declarar uma permissão desta maneira, sempre que o aplicativo for instalado
+ em um dispositivo mais antigo, o sistema não solicitará ao usuário
+ nem concederá a permissão ao aplicativo. Usando o elemento <code>&lt;uses-permission-sdk-m&gt;</code>
+, é possível adicionar novas permissões
+ a versões atualizadas do aplicativo sem forçar os usuários a conceder permissões
+ ao instalar a atualização.
+</p>
+
+<p>
+ Se o aplicativo está sendo executado em um dispositivo com M Developer Preview, o
+<code>&lt;uses-permission-sdk-m&gt;</code> se comporta da mesma forma que
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+ O sistema não solicita ao usuário que conceda quaisquer permissões ao instalar o aplicativo
+ e o aplicativo solicita as permissões à medida que forem necessárias.
+</p>
+
+<h3 id="prompting">
+ Solicitação de permissões
+</h3>
+
+<p>
+ Se o aplicativo usa o novo modelo de permissões do M Developer Preview,
+ o usuário não recebe solicitações para conceder todas as permissões quando o aplicativo é iniciado pela primeira vez em um dispositivo
+ que está sendo executado no M Preview. Em vez disso, o aplicativo solicita as permissões à medida
+ que forem necessárias. Quando um aplicativo solicita uma permissão, o sistema exibe uma caixa de diálogo
+ ao usuário.
+</p>
+
+<p>
+ Se o aplicativo executar em um dispositivo que tem SDK 22 ou inferior,
+ ele usará o antigo modelo de permissões. Quando o usuário instala o aplicativo, ele é solicitado a conceder
+ todas as permissões que o aplicativo lista no manifesto,
+ exceto as permissões que forem marcadas com <code>&lt;uses-permission-sdk-m&gt;</code>.
+</p>
+
+<h4 id="check-platform">Verifique em qual plataforma o aplicativo está sendo executado</h4>
+
+<p>
+ Este modelo de permissões é suportado apenas em dispositivos que estão executando
+ o M Developer Preview. Antes de chamar qualquer um destes métodos,
+ o aplicativo deve verificar em qual plataforma está sendo executado
+ verificando o valor de {@link android.os.Build.VERSION#CODENAME
+ Build.VERSION.CODENAME}. Se o dispositivo estiver sendo executado no M Developer Preview,
+ {@link android.os.Build.VERSION#CODENAME CODENAME} será <code>"MNC"</code>.
+</p>
+
+<h4 id="check-for-permission">Verifique se o aplicativo tem a permissão necessária</h4>
+
+<p>Quando o usuário tenta fazer algo que requer uma permissão,
+ o aplicativo verifica se tem a permissão para realizar esta operação. Para fazer isto,
+ o aplicativo chama
+ <code>Context.checkSelfPermission(<i>permission_name</i>)</code>. O aplicativo
+ deve realizar isto para verificar se sabe que o usuário já concedeu esta permissão,
+ levando em consideração que o usuário pode revogar
+ as permissões do aplicativo a qualquer momento. Por exemplo,
+ se um usuário quiser usar um aplicativo para tirar uma foto, o aplicativo chamará
+ <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.</p>
+
+<p class="table-caption" id="permission-groups">
+ <strong>Tabela 1.</strong> Permissões e grupos de permissões.</p>
+<table>
+ <tr>
+ <th scope="col">Grupo de permissões</th>
+ <th scope="col">Permissões</th>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.CALENDAR</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.READ_CALENDAR</code>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <code>android.permission.WRITE_CALENDAR</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.CAMERA</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.CAMERA</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.CONTACTS</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.READ_CONTACTS</code>
+ </li>
+ <li>
+ <code>android.permission.WRITE_CONTACTS</code>
+ </li>
+ <li>
+ <code>android.permission.READ_PROFILE</code>
+ </li>
+ <li>
+ <code>android.permission.WRITE_PROFILE</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.LOCATION</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.ACCESS_FINE_LOCATION</code>
+ </li>
+ <li>
+ <code>android.permission.ACCESS_COARSE_LOCATION</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.MICROPHONE</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.RECORD_AUDIO</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.PHONE</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.READ_PHONE_STATE</code>
+ </li>
+ <li>
+ <code>android.permission.CALL_PHONE</code>
+ </li>
+ <li>
+ <code>android.permission.READ_CALL_LOG</code>
+ </li>
+ <li>
+ <code>android.permission.WRITE_CALL_LOG</code>
+ </li>
+ <li>
+ <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
+ </li>
+ <li>
+ <code>android.permission.USE_SIP</code>
+ </li>
+ <li>
+ <code>android.permission.PROCESS_OUTGOING_CALLS</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.SENSORS</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.BODY_SENSORS</code>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <code>android.permission.USE_FINGERPRINT</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.SMS</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.SEND_SMS</code>
+ </li>
+ <li>
+ <code>android.permission.RECEIVE_SMS</code>
+ </li>
+ <li>
+ <code>android.permission.READ_SMS</code>
+ </li>
+ <li>
+ <code>android.permission.RECEIVE_WAP_PUSH</code>
+ </li>
+ <li>
+ <code>android.permission.RECEIVE_MMS</code>
+ </li>
+ <li>
+ <code>android.permission.READ_CELL_BROADCASTS</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+</table>
+
+<h4 id="request-permissions">Solicitar permissões se necessário</h4>
+
+<p>Se o aplicativo já não tem a permissão necessária, ele chama o método
+ <code>Activity.requestPermissions(String[], int)</code> para solicitar
+ as permissões necessárias. O aplicativo passa
+ as permissões que deseja e também um "código de solicitação" do inteiro.
+ Este método funciona de forma assíncrona: ele retorna imediatamente e,
+ depois que o usuário responde à caixa de diálogo, o sistema chama
+ o método de retorno de chamada do aplicativo com os resultados, passando o mesmo "código de solicitação" que o aplicativo passou
+ para <code>requestPermissions()</code>.</p>
+
+ <p>O seguinte código verifica se o aplicativo tem a permissão
+ para ler os contatos do usuário e solicita a permissão, se necessário:</p>
+
+<pre>
+if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
+ != PackageManager.PERMISSION_GRANTED) {
+ requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
+ MY_PERMISSIONS_REQUEST_READ_CONTACTS);
+
+ // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
+ // app-defined int constant
+
+ return;
+}
+</pre>
+
+<h4 id="handle-response">Lidar com a resposta de solicitação das permissões</h4>
+
+<p>
+ Quando um aplicativo solicita as permissões, o sistema apresenta uma caixa de diálogo
+ ao usuário. Quando o usuário responde, o sistema invoca o
+ <code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
+ do aplicativo, passando a ele a resposta do usuário. O aplicativo precisa substituir este método. O retorno de chamada
+ recebe o mesmo código de solicitação passado para
+ <code>requestPermissions()</code>. Por exemplo, se um aplicativo solicita o acesso
+ <code>READ_CONTACTS</code>, ele pode ter o seguinte
+ método de retorno de chamada:
+</p>
+
+<pre>
+&#64;Override
+public void onRequestPermissionsResult(int requestCode,
+ String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+
+ // permission was granted, yay! do the
+ // calendar task you need to do.
+
+ } else {
+
+ // permission denied, boo! Disable the
+ // functionality that depends on this permission.
+ }
+ return;
+ }
+
+ // other 'switch' lines to check for other
+ // permissions this app might request
+ }
+}
+</pre>
+
+ <p>Se o usuário concede a permissão, o sistema fornece ao aplicativo todas as permissões
+ que o manifesto do aplicativo lista para esta área funcional. Se o usuário negar a solicitação,
+ deve-se tomar a ação adequada. Por exemplo, deve-se desativar
+ quaisquer ações de menu que dependam desta permissão.
+ </li>
+</p>
+
+<p>
+ Quando o sistema pede para que o usuário conceda uma permissão, esse usuário tem a opção
+ de dizer ao sistema para que não peça esta permissão novamente. Nesse caso,
+ quando um aplicativo usa <code>requestPermissions()</code> para solicitar esta permissão,
+ o sistema nega imediatamente. Neste caso, o sistema chama
+ <code>onRequestPermissionsResult()</code> da mesma forma que faria se o usuário tivesse
+ rejeitado explicitamente a solicitação novamente. Por este motivo, o aplicativo
+ não pode presumir que uma interação direta com o usuário ocorreu.
+</p>
+
+<h2 id="testing">Teste de permissões de tempo de execução</h2>
+
+
+<p>
+ Se o aplicativo for direcionado para o M Developer Preview, deve-se testar
+ se ele lida com as permissões corretamente. Não se pode presumir que o aplicativo
+ terá qualquer permissão quando executado. Quando o aplicativo é iniciado pela primeira vez,
+ é provável que não tenha permissões. O usuário pode revogar e restaurar permissões
+ a qualquer momento.
+</p>
+
+<p>
+ Deve-se testar o aplicativo para garantir que ele se comporte corretamente em todas
+ as situações de permissão. Com o M Preview SDK, fornecemos os novos comandos
+ de <a href="{@docRoot}tools/help/adb.html">Android
+ Debug Bridge (adb)</a> para possibilitar que o aplicativo seja testado com quaisquer
+ configurações de permissões necessárias.
+</p>
+
+<h3>
+ Novas opções e comandos adb
+</h3>
+
+<p>
+ As ferramentas da plataforma M Preview SDK fornecem vários comandos novos para permitir
+ que você teste como o aplicativo lida com permissões.
+</p>
+
+<h4>
+ Instalar com permissões
+</h4>
+
+<p>
+ É possível usar a nova opção <code>-g</code> do comando <a href="{@docRoot}tools/help/adb.html#move"><code>adb
+ install</code></a>, que instala o aplicativo
+ e fornece todas as permissões listadas em seu manifesto:
+</p>
+
+<pre class="no-pretty-print">
+$ adb install -g &lt;path_to_apk&gt;
+</pre>
+
+<h4>
+ Conceder e revogar permissões
+</h4>
+
+<p>
+ É possível usar os novos comandos do <a href="{@docRoot}tools/help/adb.html#pm">gerenciador
+ de pacotes (pm)</a> de ADB para conceder e revogar as permissões de um aplicativo instalado.
+ Esta funcionalidade pode ser útil para testes automatizados.
+</p>
+
+<p>
+ Para conceder uma permissão, use o comando <code>grant</code> do gerenciador de pacote:
+</p>
+
+<pre class="no-pretty-print">
+$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
+</pre>
+
+<p>
+ Por exemplo: para conceder a permissão do pacote com.example.myapp para gravar áudios,
+ use este comando:
+</p>
+
+<pre class="no-pretty-print">
+$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
+</pre>
+
+<p>
+ Para revogar uma permissão, use o comando <code>revoke</code> do gerenciador de pacote:
+</p>
+
+<pre class="no-pretty-print">
+$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
+</pre>
+
+<h2 id="best-practices">Práticas recomendadas</h2>
+
+<p>
+ O novo modelo de permissões fornece aos usuários uma experiência mais suave
+ e facilita a instalação de aplicativos, deixando-os mais confortáveis
+ com o que os aplicativos estão fazendo. Sugerimos que você siga as práticas recomendadas para aproveitar
+ todas as vantagens do novo modelo.
+</p>
+
+
+<h3 id="bp-what-you-need">Peça somente as permissões necessárias</h3>
+
+<p>
+ Sempre que você pede uma permissão, o usuário é forçado a tomar uma decisão.
+ Se o usuário negar a solicitação, a funcionalidade do aplicativo será reduzida.
+ Deve-se minimizar o número de solicitações realizadas.
+</p>
+
+<p>
+ Por exemplo: o aplicativo pode frequentemente adquirir a funcionalidade necessária usando
+ uma <a href="{@docRoot}guide/components/intents-filters.html">intenção</a> em vez
+ de solicitar permissões. Se o aplicativo precisa tirar fotos com a câmera do telefone,
+ é possível usar uma intenção {@link
+ android.provider.MediaStore#ACTION_IMAGE_CAPTURE
+ MediaStore.ACTION_IMAGE_CAPTURE}. Quando o aplicativo executa a intenção,
+ o sistema pede para que o usuário escolha um aplicativo de câmera já instalado
+ para tirar a foto.
+</p>
+
+<h3 id="bp-dont-overwhelm">
+ Não oprima o usuário
+</h3>
+
+<p>
+ Se você confrontar o usuário com várias solicitações de permissão de uma só vez,
+ é possível que ele se sinta oprimido e saia do aplicativo.
+ Em vez disso, deve-se solicitar as permissões somente quando necessário.
+</p>
+
+<p>
+ Em alguns casos, uma ou mais permissões podem ser absolutamente essenciais para o aplicativo.
+ Nesta situação, faz sentido solicitar todas as permissões assim
+ que o aplicativo é iniciado. Por exemplo: se você fizer um aplicativo de fotografia,
+ ele precisará de acesso à câmera do dispositivo. Quando o usuário iniciar o aplicativo
+ pela primeira vez, ele não se surpreenderá quando receber
+ uma solicitação de permissão para usar a câmera. Mas, se o mesmo aplicativo tiver um recurso
+ para compartilhar fotos com os contatos do usuário, <em>não</em> se deve
+ pedir esta permissão na primeira inicialização. Em vez disso, espere o usuário tentar usar
+ o recurso de compartilhamento para pedir a permissão.
+</p>
+
+<p>
+ Se o aplicativo fornecer um tutorial, faz sentido solicitar as permissões
+ necessárias no final da sequência do tutorial.
+</p>
+
+<h3 id="bp-explain">
+ Explique o porquê da necessidade das permissões
+</h3>
+
+<p>
+ O diálogo de permissões exibido pelo sistema ao chamar
+ <code>requestPermissions()</code> diz quais permissões o aplicativo requer,
+ mas não diz o porquê. Em alguns casos, o usuário pode achar isto confuso.
+ É uma boa ideia explicar ao usuário o porquê da necessidade das permissões
+ para o aplicativo antes de chamar <code>requestPermissions()</code>.
+</p>
+
+<p>
+ Por exemplo: um aplicativo de fotografia pode precisar usar serviços de localização
+ para poder marcar as fotos geograficamente. Um usuário normal pode não entender que uma foto
+ pode conter informações de localização e ficar confuso quando
+ o aplicativo de fotografia quiser saber a localização. Portanto, neste caso, é uma boa ideia o aplicativo explicar
+ ao usuário sobre este recurso <em>antes</em> de chamar
+ <code>requestPermissions()</code>.
+</p>
+
+<p>
+ Uma maneira de fazer isto é incorporar estas solicitações em um tutorial do aplicativo. O tutorial pode exibir cada um dos recursos
+ do aplicativo e, à medida que fizer isto,
+ pode também explicar quais permissões são necessárias. Por exemplo, o tutorial do aplicativo de fotografia
+ pode demonstrar os recursos de compartilhamento de fotos com os contatos e,
+ em seguida, dizer ao usuário que ele precisa fornecer as permissões
+ para que o aplicativo possa visualizar os contatos. O aplicativo pode então chamar <code>requestPermissions()</code> para solicitar
+ ao usuário este acesso. É claro que nem todos os usuários seguirão o tutorial.
+ Portanto, ainda é necessário verificar e solicitar as permissões durante
+ a operação normal do aplicativo.
+</p>
diff --git a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png
new file mode 100644
index 0000000..a53a33e
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png
new file mode 100644
index 0000000..87816ff
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png
new file mode 100644
index 0000000..77f9982
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png
new file mode 100644
index 0000000..4749bcf
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png
new file mode 100644
index 0000000..724a6af
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png
new file mode 100644
index 0000000..e9a339e
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png b/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png
new file mode 100644
index 0000000..87d1cfc
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png b/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png
new file mode 100644
index 0000000..589a923
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/text-selection.gif b/docs/html-intl/intl/pt-br/preview/images/text-selection.gif
new file mode 100644
index 0000000..1d82fc6
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/text-selection.gif
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png
new file mode 100644
index 0000000..c3e4e44
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png
new file mode 100644
index 0000000..5dcf610
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/overview.jd b/docs/html-intl/intl/pt-br/preview/overview.jd
new file mode 100644
index 0000000..ce5a596
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/overview.jd
@@ -0,0 +1,362 @@
+page.title=Visão geral do programa
+page.metaDescription=Boas-vindas ao Android M Developer Preview, um programa que fornece tudo que é necessário para testar e otimizar os aplicativos para a próxima versão do Android.
+page.image=images/cards/card-preview_16-9_2x.png
+page.tags="preview", "developer", "android"
+
+@jd:body
+
+<p>
+ Boas-vindas ao <strong>Android M Developer Preview</strong>, um programa que fornece
+ tudo que é necessário para testar e otimizar os aplicativos para a próxima versão
+ do Android. É de graça e você pode começar agora mesmo: basta fazer
+ o download das ferramentas M Developer Preview.
+</p>
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+ <div class="cols">
+ <div class="col-4of12">
+ <h5>
+ Imagens de sistema de emulador e hardware
+ </h5>
+
+ <p>
+ Execute e teste os aplicativos no Nexus 5, 6, 9 e Player (para TV), bem como
+ em emuladores.
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Código de plataforma mais recente
+ </h5>
+
+ <p>
+ Nós forneceremos várias atualizações durante a prévia. Portanto, você
+ testará de acordo com as alterações mais recentes da plataforma.
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Atualizações entregues por OTA
+ </h5>
+
+ <p>
+ É possível obter atualizações por OTA (over-the-air) ao programar o dispositivo
+ em flash para a prévia inicial.
+ </p>
+ </div>
+ </div>
+
+ <div class="cols">
+
+
+ <div class="col-4of12">
+ <h5>
+ Novos comportamentos e capacidades
+ </h5>
+
+ <p>
+ Inicie o trabalho cedo para suportar os novos comportamentos da plataforma,
+ como novo modelo de permissões de tempo de execução e recursos de economia de energia.
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Janela de prioridades para problemas informados por desenvolvedores
+ </h5>
+
+ <p>
+ Durante as primeiras semanas, nós daremos prioridade aos problemas informados
+ por desenvolvedores. Portanto, teste e forneça-nos feedback o quanto antes.
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Feedback e suporte
+ </h5>
+
+ <p>
+ Informe problemas e dê-nos feedback usando o <a href="https://code.google.com/p/android-developer-preview/">issue tracker</a>.
+ Conecte-se a outros desenvolvedores na <a href="http://g.co/dev/AndroidMDevPreview">Comunidade M&nbsp;Developer</a>.
+
+ </p>
+ </div>
+ </div>
+</div>
+</div>
+
+<!--
+<p>
+ With the M Developer Preview, you'll get an early start on testing your apps,
+ with enough time to make adjustments before the public platform release later
+ in the year. We'll provide several updates to the Preview tools in the weeks
+ ahead, so you can keep in sync with the latest changes as the platform moves
+ toward launch.
+</p>
+<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
+"Preview program timeline" id="timeline">
+<p>
+ You can help us improve the platform by <a href=
+ "https://code.google.com/p/android-developer-preview/">reporting issues</a>
+ through our feedback channels. This is especially
+ critical in the first month of the preview, when we’ll be giving priority to
+ developer-reported issues and feedback.
+</p> -->
+
+
+<h2 id="timeline">
+ Linha do tempo e atualizações
+</h2>
+<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
+<p>
+ O M Developer Preview estará em execução de 28 de maio até o Android M SDK final, que
+ disponibilizaremos brevemente antes do lançamento público durante
+ o 3º trimestre de 2015.
+</p>
+
+<p>
+ Nos marcos de desenvolvimento principais, entregamos atualizações para os dispositivos de teste.
+ Os marcos de experiência são
+</p>
+
+<ul>
+ <li>
+ <strong>Preview&nbsp;1</strong> (lançamento inicial do Preview, final de maio),
+ </li>
+
+ <li>
+ <strong>Preview&nbsp;2</strong> (final de junho/início de julho) e
+ </li>
+
+ <li>
+ <strong>Preview&nbsp;3</strong> (próximo ao final de julho)
+ </li>
+</ul>
+
+<p>
+ Estas atualizações culminam no <strong>SDK final</strong> (no 3º trimestre),
+ que fornecerá APIs oficiais para a nova versão do Android,
+ bem como os recursos e comportamentos do sistema final.
+</p>
+
+<p>
+ Ao testar e desenvolver no Android M, recomendamos que você <strong>mantenha
+ o ambiente de desenvolvimento atualizado</strong> à medida que atualizações do Preview são lançadas.
+ Para facilitar o processo, fornecemos <strong>atualizações "over-the-air"
+ (OTA)</strong> aos dispositivos já programados em flash para uma versão do Preview, além
+ de fornecemos imagens do sistema que estão disponíveis para download e programação em flash manualmente.
+</p>
+<p class="note">
+ <strong>Observação:</strong> as imagens do sistema e o SDK final não podem ser entregues
+ por OTA. Em vez disso, precisarão ser <strong>programadas em flash manualmente</strong> para
+ os dispositivos de teste.</strong>
+</p>
+
+<p>
+ Notificaremos você quando as atualizações do Preview estiverem disponíveis por meio do <a href="http://android-developers.blogspot.com/">Blogue de desenvolvedores do Android</a>, além
+ deste site
+ e da <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M Developer</a>.
+</p>
+
+<h2 id="preview_tools">
+ O que há no Preview?
+</h2>
+
+<p>
+ O M Developer Preview inclui tudo que é necessário para testar os aplicativos existentes
+ em uma variedade de tamanhos de tela, tecnologias de rede, chipsets de CPU/GPU
+ e arquiteturas de hardware.
+</p>
+
+<h4>
+ Ferramentas SDK
+</h4>
+
+<p>
+ É possível fazer o download destes componentes pelo SDK Manager no <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:
+</p>
+
+<ul>
+ <li>M Developer Preview <strong>ferramentas SDK</strong>
+ </li>
+
+ <li>M Developer Preview <strong>imagem do sistema de emulador</strong> (32 bits
+e 64 bits)
+ </li>
+
+ <li>M Developer Preview <strong>imagem do sistema de emulador para Android TV</strong>
+ (32 bits)
+ </li>
+</ul>
+
+<h4>
+ Imagens do sistema de hardware
+</h4>
+
+<p>
+ É possível fazer o download destas imagens de sistema de hardware para dispositivos Nexus a partir
+ da <a href="download.html">página de download</a>:
+</p>
+
+<ul>
+ <li>
+ <strong>Nexus 5</strong> (GSM/LTE) imagem do sistema de dispositivo “hammerhead”
+ </li>
+
+ <li>
+ <strong>Nexus 6</strong> imagem do sistema de dispositivo “shamu”
+ </li>
+
+ <li>
+ <strong>Nexus 9</strong> (Wi-Fi) imagem do sistema de dispositivo “volantis”
+ </li>
+
+ <li>
+ <strong>Nexus Player</strong> (Android TV) imagem do sistema de dispositivo “fugu”
+ </li>
+</ul>
+
+<h4>
+ Exemplo de código e documentação
+</h4>
+
+<p>
+ Estes recursos de documentação ajudam você a aprender sobre o Preview:
+</p>
+
+<ul>
+ <li>
+ <a href="setup-sdk.html">Configuração do SDK</a> tem instruções passo a passo
+ para você começar.
+ </li>
+
+ <li>
+ <a href="{@docRoot}preview/testing/guide.html">Guia de teste</a> e <a href="behavior-changes.html">Mudanças de comportamento</a> mostram as áreas essenciais para o teste.
+ </li>
+
+ <li>Documentação de novas APIs, incluindo uma <a href="api-overview.html">Visão geral das APIs</a>,
+ <a href="{@docRoot}preview/download.html#docs">Referência da API</a> disponível para download e guias de desenvolvedor detalhados sobre
+ os recursos principais, como
+ <a href="{@docRoot}preview/features/runtime-permissions.html">permissões</a>,
+ <a href="{@docRoot}preview/backup/index.html">backup de aplicativo</a> etc.
+ </li>
+
+ <li>
+ <a href="{@docRoot}preview/samples.html">Exemplo de código</a> que demonstra como suportar
+ permissões e outros novos recursos.
+ </li>
+
+ <li>
+ <a href="{@docRoot}preview/support.html#release-notes">Notas de versão</a> para a versão atual do
+ M Developer Preview, incluindo notas de mudanças e relatórios de diferença.
+ </li>
+</ul>
+
+<h4>
+ Recursos de suporte
+</h4>
+
+<p>
+ Use estes recursos de suporte ao testar e desenvolver no
+ M Developer Preview:
+</p>
+
+<ul>
+ <li>O <a href="https://code.google.com/p/android-developer-preview/">Issue Tracker do M
+ Developer Preview</a> é o <strong>canal principal
+ de feedback.</strong> É possível informar erros, problemas de desempenho e feedback
+ geral pelo issue tracker. Também é possível verificar os <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">erros conhecidos</a>
+ e encontrar etapas de resolução.
+ </li>
+
+ <li>A <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M Developer
+</a> é uma comunidade do Google+ onde é possível <strong>se conectar
+ a outros desenvolvedores</strong> que trabalham com o Android M. É possível compartilhar
+ observações ou ideias, além de encontrar respostas para as dúvidas sobre o Android M.
+ </li>
+</ul>
+
+
+<h2 id="preview_apis_and_publishing">
+ Destinação, APIs de prévia e publicação
+</h2>
+
+<p>
+ O Android M Developer Preview é uma versão apenas para desenvolvimento
+ e <strong>não possui um nível da API padrão</strong>. Caso opte
+ pelos comportamentos de compatibilidade para testar o aplicativo (o que é muito recomendado),
+ é possível destinar o M Developer Preview configurando o <code><a href=
+ "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
+ do aplicativo para <code>“MNC”</code>.
+</p>
+
+<p>
+ O Android M Developer Preview fornece <strong>APIs de prévia</strong>
+ &mdash; as APIs não serão oficiais até o lançamento do SDK final,
+ atualmente planejado para o terceiro trimestre de 2015. Isto significa que é possível
+ <strong>esperar alterações secundárias de APIs</strong> com o tempo, especialmente
+ durante as semanas iniciais do programa. Forneceremos um resumo das alterações
+ com cada atualização do Android M Developer Preview.
+</p>
+
+<p class="note">
+ Observe que, apesar das APIs da prévia poderem ser alteradas, os comportamentos essenciais do sistema,
+ como permissões de tempo de execução e recursos de economia de energia, são estáveis e estão prontos
+ para serem testados.
+</p>
+
+<p>
+ Em termos de publicação, o Google Play <strong>evita a publicação de aplicativos
+ destinados para o M Developer Preview</strong>. Quando o SDK final do Android M estiver
+ disponível, você poderá destinar o nível da API do Android M oficial
+ e publicar o aplicativo no Google Play. Enquanto isso, caso queira distribuir um aplicativo
+ destinado para Android M para testadores, é possível fazê-lo por e-mail ou por download direto
+ a partir do site.
+</p>
+
+<h2 id="get_started">
+ Como começar
+</h2>
+
+<p>
+ Para começar o teste do aplicativo:
+</p>
+
+<ol>
+ <li>Revise a <a href="{@docRoot}preview/api-overview.html">Visão geral da API</a>
+ e as <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a> para
+ ter uma ideia do que há de novo e como isto afeta os aplicativos. Em particular, aprenda mais sobre
+ o novo modelo<a href="{@docRoot}preview/features/runtime-permissions.html">de permissões
+ de tempo de execução</a>, recursos de economia de energia e backup automático.
+ </li>
+
+ <li>Configure o ambiente seguindo as instruções para
+ <a href="{@docRoot}preview/setup-sdk.html">Configurar o Preview SDK</a>
+ e ajustar os dispositivos de teste.
+ </li>
+
+ <li>Siga <a href="https://developers.google.com/android/nexus/images">
+ as instruções de programação em flash</a> para programar em flash a imagem do sistema do M Developer Preview mais recente
+ para Nexus 5, 6, 9 e Player. Após programar em flash o dispositivo de desenvolvimento,
+ as atualizações do Preview serão entregues por atualizações OTA (over-the-air).</a>
+ </li>
+
+ <li>Faça o download da <a href="{@docRoot}preview/download.html#docs">Referência da API do
+ M Preview</a> e dos <a href="{@docRoot}preview/samples.html">exemplos do M Preview
+</a> para obter mais informações sobre os novos recursos de API e como usá-los
+ no aplicativo.
+ </li>
+
+ <li>Junte-se à <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M
+ Developer</a> para obter as notícias mais recentes e conecte-se a outros
+ desenvolvedores que trabalham com a nova plataforma.
+ </li>
+</ol>
+
+<p>
+ Agradecemos a sua participação no programa M Developer Preview do Android!
+</p>