From 4fd1a573eb0724251b5c0986c7f0ae7b36d52369 Mon Sep 17 00:00:00 2001 From: David Friedman Date: Mon, 29 Jun 2015 16:03:08 -0700 Subject: Docs: Localized M-Preview pages Bug: 21789313 Change-Id: Ifb4a45a65acd7b786e05bdf7b7dd86698093fbdf --- docs/html-intl/intl/ru/preview/api-overview.jd | 521 ++++++++++++++ docs/html-intl/intl/ru/preview/behavior-changes.jd | 402 +++++++++++ .../ru/preview/features/runtime-permissions.jd | 794 +++++++++++++++++++++ docs/html-intl/intl/ru/preview/overview.jd | 362 ++++++++++ 4 files changed, 2079 insertions(+) create mode 100644 docs/html-intl/intl/ru/preview/api-overview.jd create mode 100644 docs/html-intl/intl/ru/preview/behavior-changes.jd create mode 100644 docs/html-intl/intl/ru/preview/features/runtime-permissions.jd create mode 100644 docs/html-intl/intl/ru/preview/overview.jd (limited to 'docs/html-intl/intl/ru') diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd new file mode 100644 index 0000000..ae30e09 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/api-overview.jd @@ -0,0 +1,521 @@ +page.title=Обзор API-интерфейсов +page.keywords=предварительная версия,пакет sdk,совместимость +page.tags=previewresources, androidm +sdk.platform.apiLevel=22-mnc +page.image=images/cards/card-api-overview_16-9_2x.png +@jd:body + + +
+ +
+ +

M Developer Preview — ознакомительная версия предстоящего выпуска платформы Android, +в котором реализованы новые возможности как для пользователей, так и для +разработчиков приложений. В этой статье мы расскажем о наиболее интересных API-интерфейсах.

+ +

Версия M Developer Preview предназначена для тех, кто хочет первым ознакомиться с новой платформой, +а также для тестировщиков. M Developer Preview — прекрасная возможность +повлиять на вектор развития +платформы Android. +Мы с нетерпением ждем ваших отзывов!

+ +

Внимание! Не публикуйте в магазине Google Play приложения, +предназначенные для M Developer Preview.

+ +

Примечание. В этой статье часто упоминаются классы и методы, +для которых на сайте developer.android.com пока еще нет справочных материалов. Такие элементы API-интерфейса обозначаются здесь следующим образом: +{@code code style} (без гиперссылок). Чтобы ознакомиться с предварительной документацией по этим элементам, +загрузите справочное руководство по предварительной версии.

+ +

Важные изменения в работе приложений

+ +

Если вы ранее публиковали приложения для Android, то примите во внимание, что изменения в платформе могут повлиять +на работу опубликованных приложений.

+ +

Подробные сведения представлены в статье Изменения в работе.

+ +

Связывание приложений

+

В M Preview улучшена система намерений Android за счет более эффективного связывания приложений. +Теперь у вас есть возможность связывать приложения с вашими собственными веб-доменами. Благодаря этому +платформа может сама, без вмешательства пользователя, определить приложение, которое будет использоваться по умолчанию +для обработки определенной веб-ссылки. О том, как реализовать такую возможность, можно почитать в статье +Связывание приложений. + +

Автоматическое резервное копирование для приложений

+

Теперь система автоматически выполняет полное резервное копирование и восстановление данных ваших приложений. Для приложений, +написанных под M Preview, эта функция включена по умолчанию — вам даже не нужно добавлять отдельный код. Если пользователь решит удалить свою учетную запись Google, все резервные копии его данных также будут удалены. + О том, как работает эта функция и как настроить параметры резервного копирования элементов файловой системы, + рассказано в статье +Автоматическое резервное копирование для приложений.

+ +

Авторизация

+

В M Preview представлены новые API-интерфейсы, которые позволяют авторизовать пользователей по отпечатку пальца +(на устройствах, поддерживающих такую возможность), а также подтвердить учетные данные, если пользователь недавно авторизовался через механизмы разблокировки устройства +(например, вводил пароль для разблокировки экрана). Эти API-интерфейсы рекомендуется использовать совместно с +системой хранилища ключей Android.

+ +

Авторизация по отпечатку пальца

+ +

Чтобы авторизовать пользователя по отпечатку пальца, получите экземпляр нового класса +{@code android.hardware.fingerprint.FingerprintManager} и вызовите метод +{@code FingerprintManager.authenticate()}. Эта функция доступна для совместимых +устройств, оснащенных сканером отпечатков пальцев. Прежде всего, вам необходимо реализовать в своем приложении пользовательский интерфейс проверки +подлинности по отпечатку пальца, а также использовать для него стандартный значок отпечатка пальца Android. +Этот значок ({@code c_fp_40px.png}) вы можете найти в +примере приложения. При разработке нескольких приложений, использующих функцию авторизации по отпечатку пальца, +помните, что каждое из них должно самостоятельно выполнять проверку подлинности. +

+ +

Чтобы реализовать эту функцию, сначала добавьте в файл манифеста разрешение {@code USE_FINGERPRINT}. +

+ +
+<uses-permission
+        android:name="android.permission.USE_FINGERPRINT" />
+
+ + + +

Пример такой проверки подлинности вы найдете в +примере +диалогового окна авторизации по отпечатку пальца.

+ +

Если вы тестируете эту функцию, выполните следующие действия:

+
    +
  1. Установите инструменты SDK Android (версию 24.3), если у вас их еще нет.
  2. +
  3. Зарегистрируйте в эмуляторе новый отпечаток пальца (в разделе +Настройки > Безопасность > Отпечаток пальца) и следуйте дальнейшим инструкциям.
  4. +
  5. Воспользовавшись указанной ниже командой, сымитируйте в эмуляторе события касания для проверки отпечатка пальца. + С помощью этой же команды сымитируйте события касания для проверки отпечатка пальца на экране блокировки или в +своем приложении. +
    +adb -e emu finger touch <finger_id>
    +
    +

    В Windows, возможно, потребуется выполнить команду {@code telnet 127.0.0.1 <emulator-id>}, а затем +{@code finger touch <finger_id>}. +

    +
  6. +
+ +

Подтверждение учетных данных

+

Для авторизации пользователей ваше приложение может обратиться к сведениям о том, как давно они разблокировали свое устройство в последний раз. Эта функция +избавляет пользователя от необходимости запоминать отдельные пароли для каждого приложения, а вас — от необходимости +реализовывать собственный пользовательский интерфейс авторизации. В приложении эту функцию следует +использовать совместно с реализацией открытого или секретного ключа для авторизации пользователей.

+ +

Чтобы задать временя ожидания, в течение которого после успешной +авторизации можно использовать ключ повторно, вызовите новый метод +{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} +при настройке {@link javax.crypto.KeyGenerator} или +{@link java.security.KeyPairGenerator}. На сегодняшний день эта функция совместима с симметричными криптографическими +операциями.

+ +

Не стоит слишком часто отображать диалоговое окно повторной авторизации — ваше +приложение должно сначала попробовать использовать криптографический объект и только потом, если окажется, что время ожидания истекло, обратиться к методу +{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} +для повторной авторизации пользователя. +

+ +

Как можно реализовать эту функцию, показано в +примерепроверки учетных данных. +

+ +

Прямой обмен контентом

+ + + +

M Preview содержит API-интерфейсы для интуитивно понятного и быстрого обмена контентом между пользователями. Теперь вы можете +определить целевые объекты прямого обмена, которые будут запускать определенную операцию в приложении +и открываться в меню Поделиться. С помощью данной функции пользователи могут обмениваться контентом +с целевыми объектами, такими как контакты, в других приложениях. Например, целевой объект прямого обмена может запустить операцию +в другом приложении социальной сети, что позволит пользователю напрямую делиться контентом с другом +или членами сообщества через это приложение.

+ +

Чтобы включить использование целевых объектов прямого обмена, необходимо определить класс, который наследует класс +{@code android.service.}
+{@code chooser.ChooserTargetService}. Объявите +{@code ChooserTargetService} в манифесте. В этом объявлении укажите разрешение +{@code BIND_CHOOSER_TARGET_SERVICE} и фильтр намерений с помощью действия +{@code SERVICE_INTERFACE}.

+

В примере ниже показано, как объявить {@code ChooserTargetService} + в вашем манифесте.

+
+<service android:name=".ChooserTargetService"
+        android:label="@string/service_name"
+        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
+    <intent-filter>
+        <action android:name="android.service.chooser.ChooserTargetService" />
+    </intent-filter>
+</service>
+
+ +

Для каждого действия, которое необходимо сделать доступным для {@code ChooserTargetService}, добавьте в манифест вашего приложения элемент +{@code <meta-data>} с именем +{@code "android.service.chooser.chooser_target_service"}. +

+ +
+<activity android:name=".MyShareActivity”
+        android:label="@string/share_activity_label">
+    <intent-filter>
+        <action android:name="android.intent.action.SEND" />
+    </intent-filter>
+<meta-data
+        android:name="android.service.chooser.chooser_target_service"
+        android:value=".ChooserTargetService" />
+</activity>
+
+ +

Голосовой интерфейс

+

+В M Preview представлен новый голосовой API-интерфейс, который, наряду с +голосовыми командами, +позволяет встраивать в приложение диалоговое голосовое взаимодействие. Вызовите метод +{@code android.app.Activity.isVoiceInteraction()}, чтобы определить, была ли операция запущена +в ответ на голосовую команду. Если это так, ваше приложение может использовать класс +{@code android.app.VoiceInteractor}, чтобы получить голосовое подтверждение от пользователя, предложить ему список вариантов +на выбор и многое другое. Подробнее о реализации голосовых команд можно почитать в +руководстве к голосовому интерфейсу. +

+ +

API-интерфейс помощника

+

+M Preview предлагает новый способ взаимодействия пользователей с приложением — взаимодействие посредством помощника. Для этого +пользователю необходимо разришить помощнику использовать текущий контекст, после чего он сможет вызывать помощника +в любом приложении, удерживая кнопку Домой.

+

Разработчик может также запретить приложению сообщать помощнику текущий контекст. Для этого установите флаг +{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Кроме стандартного набора +информации, который платформа передает помощнику, ваше приложение может сообщать ему дополнительные +сведения посредством нового класса {@code android.app.Activity.AssistContent}.

+ +

Чтобы предоставить помощнику дополнительный контекст из вашего приложения, выполните следующие действия:

+ +
    +
  1. Реализуйте интерфейс {@link android.app.Application.OnProvideAssistDataListener}.
  2. +
  3. Зарегистрируйте этот приемник с помощью +{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.
  4. +
  5. Для предоставления контекста, относящего к конкретной операции, переопределите метод обратного вызова +{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}, +а также, при желании, новый метод обратного вызова{@code Activity.onProvideAssistContent()}. +
+ +

Уведомления

+

В API-интерфейс уведомлений внесены следующие изменения:

+ + +

Поддержка пера Bluetooth

+

В M Preview улучшена поддержка ввода с помощью пера Bluetooth. Пользователи могут подключить +совместимое перо Bluetooth к своему смартфону или планшету. Когда перо подключено, данные о его +положении объединяются со сведениями о степени нажима и нажатия кнопки на пере, +и таким образом при сенсорном вводе используются не только возможности сенсорного экрана. Ваше приложение может отслеживать +нажатия кнопки пера и выполнять дополнительные действия, регистрируя в операции новые методы обратного вызова +{@code View.onStylusButtonPressListener} и +{@code GestureDetector.OnStylusButtonPressListener}.

+ +

Для определения нажатий кнопок пера используйте методы и константы {@link android.view.MotionEvent}: +

+ + +

Улучшенное сканирование Bluetooth с низким потреблением энергии

+

+Если ваше приложение выполняет сканирование Bluetooth с низким потреблением энергии, вы можете при помощи нового метода +{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} указать, что обратные вызовы следует уведомлять только в случае, если прежде обнаружен пакет объявления, + совпадающий с заданным фильтром +{@link android.bluetooth.le.ScanFilter}, или если он не обнаруживается в течение заданного периода времени. + Такой подход к сканированию обеспечивает еще большую экономию энергии, чем это было возможно в предыдущей +версии платформы. +

+ +

Поддержка Hotspot 2.0, выпуск 1

+

+В M Preview включена поддержка Hotspot 2.0 (выпуск 1) для устройств Nexus 6 и Nexus 9. Для +предоставления учетных данных Hotspot 2.0 в вашем приложении используйте новые методы класса +{@link android.net.wifi.WifiEnterpriseConfig}, такие как {@code setPlmn()} и +{@code setRealm()}. В объекте {@link android.net.wifi.WifiConfiguration} можно задать поля +{@link android.net.wifi.WifiConfiguration#FQDN} и {@code providerFriendlyName}. +Новое свойство{@code ScanResult.PasspointNetwork} показывает, является ли обнаруженная +сеть точкой доступа Hotspot 2.0. +

+ +

Режим отображения в формате 4K

+

Теперь платформа позволяет приложениям запрашивать увеличение разрешения экрана до 4K при обработке изображения +на совместимом устройстве. Чтобы запросить текущее физическое разрешение, используйте новые API-интерфейсы +{@code android.view.Display.Mode}. Если элементы пользовательского интерфейса, отрисованные в более низком логическом разрешении, масштабируются до +более высокого физического разрешения, обратите внимание, что метод физического разрешения +{@code Display.Mode.getPhysicalWidth()} возвращает результат, который может отличаться от результата выполнения метода логического разрешения +{@link android.view.Display#getSize(android.graphics.Point) getSize()} .

+ +

Можно отправить запрос системе на изменение физического разрешения в активном приложении, задав для окна вашего приложения свойство +{@code WindowManager.LayoutParams.preferredDisplayModeId}. Эта +функция особенно полезна в случаях, когда требуется переключиться на разрешение экрана 4K. В режиме отображения в формате 4K элементы +пользовательского интерфейса отрисовываются в исходном разрешении (например, 1080p) и масштабируются до 4K, однако содержимое +{@link android.view.SurfaceView} объектов может отображаться с использованием основного разрешения.

+ +

Метод ColorStateLists для работы с темами

+

Теперь метод +{@link android.content.res.ColorStateList} для устройств под управлением M Preview поддерживает атрибуты темы. Методы +{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} и +{@link android.content.res.Resources#getColor(int) getColor()} уже неактуальны. Если вы +вызываете эти API-интерфейсы, вызовите вместо них новые методы {@code Context.getColorStateList()} или +{@code Context.getColor()}, Доступные также в библиотеке v4 appcompat +посредством {@link android.support.v4.content.ContextCompat}.

+ +

Работа с аудио

+ +

В M Preview реализован ряд улучшений в области обработки аудиофайлов системой Android, включая следующие:

+ + +

Работа с видео

+

В M Preview вы обнаружите новые возможности API-интерфейсов для обработки видео, в том числе:

+ + +

Возможности камеры

+

В M Preview представлены следующие API-интерфейсы для вспышки камеры и повторной обработки +изображений камерой.

+ +

API-интерфейс вспышки

+

Если камера оснащена вспышкой, вы можете вызвать метод{@code CameraManager.setTorchMode()}, +чтобы включить или отключить режим фонарика, не запуская камеру. Приложение +не может заполучить вспышку или камеру в единоличное пользование. Режим фонарика отключается +и становится недоступен, когда камера недоступна или ресурсов камеры недостаточно для использования вспышки в качестве +фонарика. Кроме того, другие приложения могут вызывать метод {@code setTorchMode()} +для отключения режима фонарика. При закрытии приложения, которое включило режим фонарика, этот режим +отключается.

+ +

Чтобы зарегистрировать обратный вызов для уведомления о режиме фонарика, вызовите метод +{@code CameraManager.registerTorchCallback()}. При первой регистрации обратного вызова +он сразу же вызывается со сведениями о состоянии режима фонарика для всех известных к настоящему моменту устройств, +оснащенных вспышкой. При успешном включении или отключении фонарика вызывается метод +{@code CameraManager.TorchCallback.onTorchModeChanged()}.

+ +

API-интерфейс повторной обработки

+

API-интерфейс {@link android.hardware.camera2 Camera2} теперь поддерживает повторную обработку цветовых моделей YUV и изображений в собственном +формате непрозрачности. Чтобы определить, возможна ли повторная обработка, приложение использует метод +{@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Если устройство поддерживает повторную обработку, +вы можете создать сеанс захвата изображения с камеры с возможностью повторной обработки, вызвав метод +{@code CameraDevice.createReprocessableCaptureSession()}, а затем создать запросы на повторную обработку буфера +входных данных.

+ +

Чтобы подключить поток буфера входных данных к модулю повторной обработки изображения с камеры, используйте класс +{@code ImageWriter}. Чтобы получить пустой буфер, выполните следующие действия:

+ +
    +
  1. Вызовите метод {@code ImageWriter.dequeueInputImage()}.
  2. +
  3. Заполните буфер входными данными.
  4. +
  5. Отправьте буфер в камеру, вызвав метод {@code ImageWriter.queueInputImage()}.
  6. +
+ +

Если вы используете объект {@code ImageWriter} вместе с изображением +{@code android.graphics.ImageFormat.PRIVATE}, вашему приложению не удастся получить доступ к изображению +напрямую. Вместо этого передайте изображение {@code ImageFormat.PRIVATE} прямо в +{@code ImageWriter}, вызвав метод {@code ImageWriter.queueInputImage()} без копии +буфера.

+ +

Класс {@code ImageReader} теперь поддерживает потоки изображений в формате {@code android.graphics.ImageFormat.PRIVATE}. + Благодаря этому ваше приложение может организовать циклическую очередь выходных изображений +{@code ImageReader}, выбрать одно или несколько изображений и отправить их в +{@code ImageWriter} для повторной обработки камерой.

+ +

Возможности Android for Work

+

В M Preview представлены новые API-интерфейсы для Android for Work:

+ + +

+ Подробные сведения обо всех изменениях в API-интерфейсах в версии M Developer Preview представлены в отчете о различиях между API-интерфейсами. +

diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/preview/behavior-changes.jd new file mode 100644 index 0000000..0623ea7 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/behavior-changes.jd @@ -0,0 +1,402 @@ +page.title=Изменения в работе +page.keywords=предварительная версия,пакет sdk,совместимость +sdk.platform.apiLevel=MNC +@jd:body + +
+ +
+ +

Наряду с новыми функциями и возможностями, версия M Developer Preview также включает в себя ряд +системных изменений и изменений в работе API-интерфейсов. В этом документе рассматриваются +определенные ключевые изменения, о которых следует знать, чтобы учитывать их при разработке приложений.

+ +

Если вы ранее публиковали приложения для Android, то примите во внимание, +что эти изменения в платформе могут повлиять на работу ваших уже опубликованных приложений.

+ +

Разрешения на выполнение

+

В M Preview представлена новая модель разрешений: теперь пользователи могут управлять разрешениями приложений +напрямую во время работы с ними. Такая модель обеспечивает улучшенное управление +разрешениями и одновременно позволяет оптимизировать установку и автоматическое обновление для разработчиков. +Пользователи могут предоставлять разрешения или отзывать их отдельно для каждого установленного приложения.

+ +

В ваших приложениях, предназначенных для M Preview, следует в обязательном порядке проверить такие разрешения и при необходимости +запросить их. Чтобы определить, было ли вашему приложению предоставлено разрешение, вызовите новый метод +{@code Context.checkSelfPermission()}. Чтобы запросить разрешение, вызовите новый метод +{@code Activity.requestPermission()}. Даже если ваше приложение не предназначено для использования в версии M, вам все равно следует +протестировать его с использованием новой модели разрешений.

+ +

Подробные сведения о поддержке новой модели +разрешений вашим приложением представлены в статье +Разрешения. Как можно проверить влияние новой модели на ваше приложение, читайте в +руководстве по тестированию

+ +

Оптимизация экономии энергии

+

В M Preview реализован ряд новых функций оптимизации экономии энергии для неактивных устройств и приложений.

+ +

Режим «Doze»

+

Если устройство отключено от сети и остается неактивным (и с выключенным экраном) в течение определенного времени, +оно переходит в режим Doze и старается, чтобы система не выходила из спящего состояния. В этому режиме +устройство периодически возобновляет свою обычную работу на краткие промежутки времени, чтобы произвести +синхронизацию и позволить системе выполнить какие-либо отложенные операции.

+ +

Когда устройство находится в режиме «Doze», к приложениям применяются следующие ограничения:

+ +

+

После выхода из режима «Doze», устройство приступает к выполнению любых отложенных заданий и операций синхронизации.

+

Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру +для разработки и выполните следующие команды: +

+
+$ adb shell dumpsys battery unplug
+$ adb shell dumpsys deviceidle step
+$ adb shell dumpsys deviceidle -h
+
+

Примечание. В предстоящем выпуске службы +Google Cloud Messaging +реализована возможность назначения сообщений +с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткое время предоставляется +доступ к сети, даже если устройство находится в режиме «Doze». +

+ +

Советы по тестированию работы приложений в режиме «Doze» представлены +в руководстве +по тестированию.

+ +

Ждущий режим для приложений

+

В M Preview система может определять, что приложения неактивны, когда они +не используются. Приложение считается неактивным по прошествии определенного периода времени до тех пор, пока система +не обнаружит один из следующих сигналов:

+ + + +

Если устройство отключено от электросети, для приложений, которые считаются неактивными, закрывается доступ к Интернету, +а их операции синхронизации и задания приостанавливаются. После подключения устройства к электросети доступ к Интернету для приложений возобновится +и они смогут приступить к выполнению любых ожидающих заданий и операций синхронизации. Если устройство +неактивно в течение длительного времени, неактивным приложениям раз в день предоставляется доступ к сети.

+ +

Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру +для разработки и выполните следующие команды: +

+
+$ adb shell dumpsys battery unplug
+$ adb shell am set-idle <packageName> true
+$ adb shell am set-idle <packageName> false
+$ adb shell am get-idle <packageName>
+
+ +

Примечание. В предстоящем выпуске службы +Google Cloud Messaging (GCM) +реализована возможность назначения сообщений +с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткий промежуток времени предоставляется +доступ к сети, даже если приложение находится в неактивном состоянии. +

+ +

Советы по тестированию работы приложений в ждущем режиме представлены +в руководстве +по тестированию.

+ +

Подключаемые устройства хранения

+

+В M Preview пользователи могут подключать внешние устройства хранения, такие как SD-карты, и использовать их как внутреннее хранилище, +зашифровав и отформатировав требуемым образом. Благодаря этому + пользователи могут переносить как сами приложения, так свои файлы для этих приложений с одного устройства хранения на другое. При переносе +приложений система руководствуется настройкой +{@code android:installLocation} +в манифесте.

+ +

Если ваше приложение работает с указанными ниже API-интерфейсами или полями, следует помнить, что возвращаемые ими пути к файлам +будут динамически изменяться при перемещении приложения с внутреннего хранилища на внешнее устройство или наоборот. +При создании путей к файлам настоятельно рекомендуется всегда вызывать эти API-интерфейсы динамическим образом. +Не используйте жестко запрограммированные пути к файлам и не указывайте созданные ранее полные пути к файлам.

+ + + +

Для отладки этой функции в Developer Preview подключите USB-устройство, + к устройству Android посредством USB-кабеля On-The-Go (OTG) и выполните следующую команду:

+ +
+$ adb shell sm set-force-adoptable true
+
+ +

Отказ от HTTP-клиента Apache

+

В M Preview удалена поддержка HTTP-клиента Apache. Если ваше приложение, разработанное для +Android 2.3 (уровень API 9) или более поздней версии, использует этот клиент, вам необходимо воспользоваться вместо него классом {@link java.net.HttpURLConnection}. + Этот API-интерфейс более эффективный, поскольку он сокращает использование сетевого трафика за счет прозрачного сжатия +и кэширования ответов, а также сводит к минимуму потребление энергии. Чтобы продолжить использовать API-интерфейсы HTTP Apache, +сначала объявите в своем файле {@code build.gradle} следующую зависимость compile-time: +

+
+android {
+    useLibrary 'org.apache.http.legacy'
+}
+
+

Вместо OpenSSL в Android теперь будет использоваться библиотека +BoringSSL +. Если вы используете в ваших приложениях Android NDK, не связывайте его с криптографическими библиотеками, +которые не входят в состав API-интерфейса NDK, такими как {@code libcrypto.so} и {@code libssl.so}. Эти библиотеки +не являются общедоступными API-интерфейсами, и в разных выпусках или на разных устройствах они могут быть изменены или разбиты без предварительного уведомления. +Кроме того, этим вы можете создать уязвимости в системе безопасности вашего продукта. Вместо этого внесите изменения в +собственный код для вызова криптографических API-интерфейсов Java посредством JNI или статической ссылки на +библиотеку криптографии по своему выбору.

+ +

Изменения в классе AudioManager

+

Теперь в платформе не поддерживается настройка уровня громкости напрямую или отключение звука определенных потоков с помощью класса {@link android.media.AudioManager}. + Метод {@link android.media.AudioManager#setStreamSolo(int,boolean) +setStreamSolo()} больше не используется. Вместо него следует вызывать метод +{@code AudioManager.requestAudioFocus()}. Также больше не используется метод +{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()}; +вместо него следует вызывать метод {@code AudioManager.adjustStreamVolume()} +и передавать в него значение направления {@code ADJUST_MUTE} или {@code ADJUST_UNMUTE}.

+ +

Выделение текста

+ + + +

Теперь, когда пользователь выделяет текст в приложении, такие дополнительные действия как +Вырезать, Копировать и Вставить, можно отображать на +перемещаемой панели инструментов. Реализация взаимодействия пользователя с текстом аналогична той, которая используется для +контекстного меню, +как описано в статье +Запуск контекстного меню для отдельных представлений.

+ +

Чтобы реализовать перемещаемую панель инструментов для выделения текста, внесите в ваши существующие приложения +следующие изменения.

+
    +
  1. В объекте {@link android.view.View} или {@link android.app.Activity} измените вызовы +{@link android.view.ActionMode} с +{@code startActionMode(Callback)} на {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.
  2. +
  3. Возьмите свою реализацию класса {@code ActionMode.Callback} и сделайте его наследуемой от класса +{@code ActionMode.Callback2}.
  4. +
  5. Переопределите метод {@code Callback2.onGetContentRect()} для указания координат объекта +{@link android.graphics.Rect} контента (например, прямоугольника выделения текста) в представлении.
  6. +
  7. Если расположение прямоугольника больше недействительно и это единственный элемент, который не подлежит пересчитыванию, +вызовите метод {@code ActionMode.invalidateContentRect()}.
  8. +
+ +

Если вы используете +вспомогательную библиотеку Android версии 22.2, то помните, что перемещаемым панелям инструментов +не свойственна обратная совместимость и по умолчанию для управления объектами {@link android.view.ActionMode} +используется библиотека appcompat. Это означает, что перемещаемые панели инструментов не будут отображаться. Чтобы включить поддержку +{@link android.view.ActionMode} в +{@link android.support.v7.app.AppCompatActivity}, вызовите метод +{@code android.support.v7.app.AppCompatActivity.getDelegate()}, затем вызовите +{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} для возвращенного объекта +{@link android.support.v7.app.AppCompatDelegate} и задайте для параметра input +значение {@code false}. Этот вызов возвращает управление объектами {@link android.view.ActionMode} +платформе. На устройствах под управлением M Preview платформа поддерживает как режимы +{@link android.support.v7.app.ActionBar}, так и режимы перемещаемых панелей инструментов, тогда как на устройствах под управлением более ранних версий +поддерживаются только режимы {@link android.support.v7.app.ActionBar}.

+ +

Изменения в хранилище ключей Android

+

В M Preview +поставщик хранилища ключей Android больше не поддерживает +DSA. ECDSA по-прежнему поддерживается.

+ +

Ключи, для которых не требуется шифрование в хранилище, больше не будут удаляться при отключении или сбросе защищенного экрана блокировки +(например, пользователем или администратором устройства). Ключи, для которых требуется шифрование +в хранилище, во время таких событий будут удалены.

+ +

Изменения в работе с Wi-Fi и сетями

+ +

Ниже перечислены изменения в API-интерфейсах для работы с Wi-Fi и сетями, реализованные в M Preview.

+ + +

Изменения в службе камеры

+

В M Preview изменена модель получения доступа к ресурсам в службе камеры. + Если раньше запросы доступа обрабатывались в порядке поступления, то теперь процессы с высоким приоритетом имеют преимущество. + В работе службы камеры произошли следующие изменения:

+ + +

Среда выполнения ART

+

Среда выполнения ART теперь должным образом реализует правила доступа для метода +{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Это +изменение позволило устранить проблему, связанную с тем, что в предыдущих версиях система Dalvik неправильно проверяла правила доступа. +Если ваше приложение использует метод +{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} и вы +хотите переопределить проверки доступа, вызовите метод +{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()}, присвоив параметру input +значение {@code true}. Если ваше приложение использует +библиотеку appcompat v7 или +библиотеку recyclerview v7, +вам необходимо установить актуальные версии этих библиотек. В противном случае убедитесь в том, +что любые настраиваемые классы, на которые имеются ссылки из XML, обновлены и их конструкторы классов доступны.

+ +

В M Preview обновлено поведение динамического компоновщика. Теперь он распознает разницу между +{@code soname} библиотеки и путем к ней +(ошибка 6670, о которой сообщалось в открытых источниках), +и позволяет выполнять поиск по {@code soname}. + Приложения, которые ранее работали, но содержали неправильные записи {@code DT_NEEDED} +(обычно абсолютные пути в файловой системе компьютера для сборки), теперь при загрузке могут выдавать ошибки.

+ +

В M Preview правильно реализован флаг {@code dlopen(3) RTLD_LOCAL}. Обратите внимание, что +{@code RTLD_LOCAL} используется по умолчанию, поэтому будут затронуты вызовы {@code dlopen(3)}, которые явно не используют +{@code RTLD_LOCAL} (за исключением случаев, когда ваше приложение явным образом использует{@code RTLD_GLOBAL}). Поскольку используется +{@code RTLD_LOCAL}, символы не будут доступны для библиотек, загруженных с использованием последующих вызовов +{@code dlopen(3)} (в противоположность ссылкам из записей {@code DT_NEEDED}).

+

+ +

Проверка пакетов APK

+

Теперь платформа более строго подходит к проверке пакетов APK. Пакет APK считается поврежденным, если файл объявлен +в манифесте, но отсутствует в самом пакете APK. Пакет APK подлежит повторной подписи в случае удаления любого его +содержимого.

+ +

Изменения в Android for Work

+

В M Preview представлены следующие изменения работы Android for Work:

+ diff --git a/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd new file mode 100644 index 0000000..7d12b2d --- /dev/null +++ b/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd @@ -0,0 +1,794 @@ +page.title=Разрешения +page.tags=previewresources, androidm +page.keywords=разрешения, среда выполнения, предварительная версия +page.image={@docRoot}preview/features/images/permissions_check.png +@jd:body + + +
+
+

Краткое описание

+
    +
  • Если ваше приложение предназначено для пакета SDK M Preview, пользователю будет предложено предоставить для него разрешения + не в процессе установки, а при работе с приложением.
  • +
  • Пользователь также может в любой момент отозвать разрешения, воспользовавшись экраном приложения «Настройки» +.
  • +
  • Ваше приложение должно проверять наличие соответствующих разрешений при каждом запуске. +
  • +
+ +

Содержание документа

+
    +
  1. Обзор
  2. +
  3. Добавление в код разрешений на выполнение
  4. +
  5. Тестирование разрешений на выполнение
  6. +
  7. Советы и рекомендации
  8. +
+ + + + +
+
+ + +

+ В версии M Developer Preview представлена новая модель разрешений для приложений, которая +оптимизирует для пользователей процесс установки и обновления приложений. Если приложение, +работающее в M Preview, поддерживает новую модель разрешений, пользователю не нужно предоставлять какие-либо +разрешения при установке приложения или его обновлении. Вместо этого приложение +запрашивает разрешения, когда в них возникает необходимость, — в таких случаях система отображает для пользователя диалоговое окно с просьбой предоставить +соответствующее разрешение. +

+ +

+ Если приложение поддерживает новую модель разрешений, его, тем не менее, можно установить и +запустить на устройстве под управлением одной из более ранних версий Android, и оно будет использовать старую модель +разрешений. +

+ +

+ Обзор +

+ +

+ В версии M Developer Preview представлена новая +модель разрешений. Ниже приводится краткий обзор ее ключевых компонентов: +

+ + + +

+ Новая модель разрешений влияет на поведение приложений при работе с функциями, для +которых требуются разрешения. При использовании этой модели в разработке + обратите внимание на следующие рекомендации: +

+ + + +

+ Примечание. Если приложение предназначено для M Developer Preview, оно +должно в обязательном порядке использовать новую модель разрешений. +

+ +

+ На момент выпуска M Developer Preview не все приложения Google в полной мере реализуют + новую модель разрешений. Google обновляет эти приложения +по мере разработки M Developer Preview, чтобы они должным образом поддерживали настройки +разрешений. +

+ +

+ Примечание. Если у вашего приложения имеется собственная поверхность API-интерфейса, прежде чем проксировать +разрешения, убедитесь сначала в том, что у вызывающей операции имеются надлежащие +разрешения на доступ к данным. +

+ +

+ Предоставление приложениям системных разрешений и подписи +

+ +

+ Как правило, когда пользователь устанавливает приложение, система предоставляет такому приложению только те +разрешения, которые соответствуют константе {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL +PROTECTION_NORMAL}. Однако в определенных ситуациях система предоставляет +приложению больше разрешений: +

+ + + +

+ В обоих случаях пользователь по-прежнему может в любое время отозвать разрешения, обратившись к +экрану Настройки и выбрав Приложения +> название_приложения > Разрешения. Поэтому приложение все равноу +должно проверять наличие разрешений во время выполнения и при необходимости запрашивать их. + +

+ +

+ Совместимость с предыдущими и последующими версиями +

+ +

+ Если приложение не предназначено для M Developer Preview, оно +продолжает использовать старую модель разрешений даже на устройствах под управлением M Preview. В таком случае при установке приложения + система предлагает пользователю предоставить все разрешения, +указанные в манифесте приложения. +

+ +

+ Примечание. На устройствах под управлением M Developer Preview пользователь может отключить +разрешения для любого приложения (включая устаревшие приложения) на экране «Настройки». + Если пользователь решит отключить разрешения для устаревших приложений, система +автоматически отключит соответствующие функциональные возможности. Когда приложение пытается +выполнить операцию, для которой требуется такое разрешение, это +не обязательно приведет к возникновению исключения. Вместо этого оно может выдать пустой набор данных, +сигнал об ошибке или иным образом обозначить непредвиденное поведение. Например, если запросить +календарь, не имея соответствующего разрешения, метод возвратит пустой набор данных. +

+ +

+ При установке приложения с использованием новой модели разрешений на устройство +под управлением другой версии ОС, отличной от M Preview, +система рассматривает такое приложение как любое другое и предлагает +пользователю предоставить все объявленные разрешения уже во время установки. +

+ +

+ Примечание. В случае с предварительной версией в качестве минимальной версии пакета SDK +следует задать версию SDK M Preview, чтобы получить возможность компилировать код с помощью пакета SDK предварительной версии. Это означает, +что вы не сможете протестировать такие приложения на старых платформах +во время использования предварительной версии для разработчиков. +

+ +

Разрешения и намерения

+ +

+ Во многих случаях при разработке приложения у вас есть выбор между двумя способами выполнения задачи: + вы можете настроить приложение таким образом, чтобы оно самостоятельно запрашивало соответствующие разрешения на выполнение +операции, или же можно указать ему использовать намерение, чтобы задачу выполнило +другое приложение. +

+ +

+ Например, предположим, что вашему приложению требуется возможность делать снимки с помощью камеры устройства. + Ваше приложение может запросить разрешение +android.permission.CAMERA, которое позволит ему напрямую получить доступ +к камере. Затем ваше приложение использует API-интерфейсы камеры +для управления камерой и получения снимков. Благодаря такому подходу ваше приложение получает +полный контроль над процессом фотографирования. Кроме того, это позволяет вам вставить пользовательский интерфейс камеры +в свое приложение. +

+ +

+ Если же вам не требуется такой контроль, просто воспользуйтесь намерением {@link +android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} +для запроса изображения. Когда вы запускаете намерение, пользователю предлагается выбрать +приложение камеры (если оно отличается от приложения камеры по умолчанию), после чего +это приложение делает снимок. Приложение камеры возвращает полученное изображение в метод {@link +android.app.Activity#onActivityResult onActivityResult()} вашего приложения. +

+ +

+ Аналогичным образом, если вам необходимо позвонить, получить доступ к контактам пользователя и так далее, +можно создать соответствующее намерение или запросить +разрешение и напрямую получить доступ к нужным объектам. У каждого подхода есть +как преимущества, так и недостатки. +

+ +

+ При использовании разрешений: +

+ + + +

+ При использовании намерений: +

+ + + +

Добавление в код разрешений на выполнение

+ +

+ Если ваше приложение предназначено для новой версии M Developer Preview, вы должны в обязательном порядке использовать +новую модель разрешений. Это означает, что кроме объявления требуемых разрешений +в манифесте, вам следует проверять наличие этих разрешений +во время выполнения, а также запрашивать их, если у вас +еще нет необходимых разрешений. +

+ +

+ Активация новой модели разрешений +

+ +

+ Чтобы активировать новую модель разрешений M Developer Preview, задайте для атрибута +targetSdkVersion приложения значение "MNC", а для атрибута +compileSdkVersion – значение "android-MNC". Это позволит +включить все функции новой модели разрешений. +

+ +

+ В случае с предварительной версией необходимо задать для параметра minSdkVersion значение +"MNC", чтобы получить возможность компилировать код с помощью пакета SDK предварительной версии. +

+ +

+ Назначение разрешений только для M Preview +

+ +

+ В манифесте приложения можно использовать новый элемент <uses-permission-sdk-m>, +чтобы указать, что разрешение требуется только для M Developer Preview. Если объявить +разрешение таким способом, то при установке приложения на устройство с более старой версией платформы +система не будет отправлять запрос пользователю или предоставлять разрешение приложению. +С помощью элемента <uses-permission-sdk-m> +вы можете добавлять новые разрешения +в обновленные версии вашего приложения без принудительного запроса у пользователей разрешений при +установке обновления. +

+ +

+ Если приложение запущено на устройстве под управлением M Developer Preview, +поведение элемента <uses-permission-sdk-m> аналогично поведению +<uses-permission>. + Система не запрашивает у пользователей предоставление каких-либо разрешений, когда они устанавливают +приложение. Вместо этого приложение само запрашивает разрешения, когда они требуются. +

+ +

+ Запрос разрешений +

+ +

+ Если ваше приложение использует новую модель разрешений M Developer Preview, то при первом запуске приложения +на устройстве под управлением +M Preview пользователю не предлагается предоставить все разрешения. Вместо этого приложение само запрашивает разрешения, когда они +требуются. Когда приложение запрашивает разрешение, система отображает для пользователя соответствующее диалоговое +окно. +

+ +

+ Если ваше приложение запущено на устройстве с пакетом SDK уровня 22 или более низкого, то приложение использует старую +модель разрешений. То есть при каждой устновке приложения пользователю будет предложено предоставить приложению все разрешения, +запрашиваемые в манифесте приложения, кроме +отмеченных элементом <uses-permission-sdk-m>. +

+ +

Проверка платформы, на которой выполняется приложение

+ +

+ Новая модель разрешений поддерживается только на устройствах под управлением M Developer +Preview. Прежде чем вызывать любые из этих методов, приложению следует проверить, +на какой платформе оно выполняется, +обратившись к значению параметра {@link android.os.Build.VERSION#CODENAME +Build.VERSION.CODENAME}. Если устройство работает под управлением M Developer Preview, +то значение параметра{@link android.os.Build.VERSION#CODENAME CODENAME} будет "MNC". +

+ +

Проверка наличия у приложения необходимого разрешения

+ +

Когда пользователи пытаются выполнить какое-либо действие, для которого требуется разрешение, приложение +проверяет, имеется ли у него в настоящее время разрешение на выполнение этой операции. Для этого +приложение вызывает метод +Context.checkSelfPermission(permission_name). Приложению +следует выполнять такую проверку даже в том случае, если ему известно, что пользователь уже предоставил +необходимое разрешение, +поскольку пользователь может в любое время отозвать разрешения приложения. Например, если пользователь +хочет получить снимок с помощью приложения, то приложение вызывает метод +Context.checkSelfPermission(Manifest.permission.CAMERA).

+ +

+ Таблица 1. Разрешения и группы разрешений.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Группа разрешенийРазрешения
android.permission-group.CALENDAR +
    +
  • + android.permission.READ_CALENDAR +
  • +
+
    +
  • + android.permission.WRITE_CALENDAR +
  • +
+
android.permission-group.CAMERA +
    +
  • + android.permission.CAMERA +
  • +
+
android.permission-group.CONTACTS +
    +
  • + android.permission.READ_CONTACTS +
  • +
  • + android.permission.WRITE_CONTACTS +
  • +
  • + android.permission.READ_PROFILE +
  • +
  • + android.permission.WRITE_PROFILE +
  • +
+
android.permission-group.LOCATION +
    +
  • + android.permission.ACCESS_FINE_LOCATION +
  • +
  • + android.permission.ACCESS_COARSE_LOCATION +
  • +
+
android.permission-group.MICROPHONE +
    +
  • + android.permission.RECORD_AUDIO +
  • +
+
android.permission-group.PHONE +
    +
  • + android.permission.READ_PHONE_STATE +
  • +
  • + android.permission.CALL_PHONE +
  • +
  • + android.permission.READ_CALL_LOG +
  • +
  • + android.permission.WRITE_CALL_LOG +
  • +
  • + com.android.voicemail.permission.ADD_VOICEMAIL +
  • +
  • + android.permission.USE_SIP +
  • +
  • + android.permission.PROCESS_OUTGOING_CALLS +
  • +
+
android.permission-group.SENSORS +
    +
  • + android.permission.BODY_SENSORS +
  • +
+
    +
  • + android.permission.USE_FINGERPRINT +
  • +
+
android.permission-group.SMS +
    +
  • + android.permission.SEND_SMS +
  • +
  • + android.permission.RECEIVE_SMS +
  • +
  • + android.permission.READ_SMS +
  • +
  • + android.permission.RECEIVE_WAP_PUSH +
  • +
  • + android.permission.RECEIVE_MMS +
  • +
  • + android.permission.READ_CELL_BROADCASTS +
  • +
+
+ +

Запрос разрешений при необходимости

+ +

Если у приложения нет требуемого разрешения, оно вызывает метод +Activity.requestPermissions(String[], int), чтобы запросить его. + Приложение передает в него +требуемые разрешения, а также целочисленный код запроса. + Этот метод выполняется асинхронно: он возвращает результат сразу же, а после того как пользователь +предоставляет ответ в диалоговом окне, система вызывает метод обратного вызова +приложения с результатами и передает в него тот же код запроса, который приложение передало в метод +requestPermissions().

+ +

Ниже представлен пример кода для проверки наличия у приложения разрешения на чтение контактов +пользователя и запроса соответствующего разрешения при необходимости.

+ +
+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;
+}
+
+ +

Обработка ответа на запрос разрешений

+ +

+ Когда приложение запрашивает разрешения, система отображает для пользователя соответствующее диалоговое +окно. После получения ответа от пользователя система вызывает метод +Activity.onRequestPermissionsResult(int, String[], int[]) +вашего приложения и передает в него ответ пользователя. Вашему приложению необходимо переопределить этот метод. В обратном +вызове передается тот же код запроса, который вы передали в метод +requestPermissions(). Например, если приложение запрашивает доступ на +READ_CONTACTS, то метод обратного вызова +может быть следующим: +

+ +
+@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
+    }
+}
+
+ +

Если пользователь предоставляет разрешение, система, в свою очередь, представляет все разрешения, +запрашиваемые в манифесте приложения для обозначенной функциональной области. Если пользователь +отказывает в предоставлении разрешения, вам необходимо принять меры. Например, вы можете отключить любые пункты меню +, для использования которых требуется это разрешение. + +

+ +

+ Когда система предлагает пользователю предоставить разрешение, он может указать системе, +чтобы она больше не запрашивала это разрешение. В этом случае, +когда приложение использует метод requestPermissions() для запроса такого разрешения, +система сразу же отклоняет запрос. При этом система вызывает ваш метод +onRequestPermissionsResult() так же, как если бы пользователь повторно +отклонил ваш запрос. Поэтому ваше приложение +не считает, что имело место прямое взаимодействие с пользователем. +

+ +

Тестирование разрешений на выполнение

+ + +

+ Если ваше приложение предназначено для новой версии M Developer Preview, то вы должны протестировать +его и убедиться в том, что оно должным образом обрабатывает разрешения. Не надо исходить из того, что к началу работы ваше приложение уже имеет +любые определенные разрешения. При первом запуске приложения оно, +скорее всего, не будет обладать разрешениями, а в дальнейшем пользователь может в любой момент отозвать или восстановить +разрешения. +

+ +

+ Вам следует протестировать ваше приложение и убедиться в том, что оно ведет себя должным образом в +любых ситуациях, касающихся разрешений. Мы включили в состав пакета SDK M Preview SDK новые команды +Android +Debug Bridge (ADB), чтобы вы могли протестировать ваше приложение с любыми настройками разрешений, +которые вы хотите попробовать в действии. +

+ +

+ Новые команды и параметры ADB +

+ +

+ В состав пакета инструментов SDK M Preview входит ряд новых команд, позволяющих протестировать обработку разрешений +вашим приложением. +

+ +

+ Установка с разрешениями +

+ +

+ Можно воспользоваться новым параметром -g команды adb + install, который служит для установки +приложения и предоставления всех разрешений, указанных в его манифесте: +

+ +
+$ adb install -g <path_to_apk>
+
+ +

+ Предоставление разрешений и их отзыв +

+ +

+ Для предоставления разрешений установленному приложению и их отзыва можно использовать новые команды диспетчера пакетов +ADB. +Такая функциональная возможность может быть полезна для автоматизированного тестирования. +

+ +

+ Для представления разрешения используйте команду grant диспетчера пакетов: +

+ +
+$ adb pm grant <package_name> <permission_name>
+
+ +

+ Например, чтобы представить пакету com.example.myapp разрешение на запись +аудио, воспользуйтесь следующей командой: +

+ +
+$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
+
+ +

+ Чтобы отозвать разрешение, используйте команду revoke диспетчера пакетов: +

+ +
+$ adb pm revoke <package_name> <permission_name>
+
+ +

Советы и рекомендации

+ +

+ Новая модель разрешений делает работу пользователей удобнее, +упрощает для них процесс установки приложений и позволяет лучше понимать, +что делает то или иное приложение. Чтобы использовать все преимущества +этой модели, примите во внимание следующие рекомендации: +

+ + +

Запрашивайте только те разрешения, которые необходимы

+ +

+ Каждый раз, когда вы запрашиваете разрешение, вы заставляете пользователя делать выбор. + Если пользователь отклоняет запрос, соответствующая функциональная возможность приложения отключается. + Вам следует сократить количество таких запросов. +

+ +

+ Например, во многих случаях можно предоставить приложению доступ к нужной функции посредством +намерения вместо +запроса разрешений. Если вашему приложению необходимо получить снимки с камеры +телефона, можно использовать намерение {@link +android.provider.MediaStore#ACTION_IMAGE_CAPTURE +MediaStore.ACTION_IMAGE_CAPTURE}. Когда ваше приложение выполняет намерение, система +предлагает пользователю выбрать уже установленное приложение камеры для +получения снимков. +

+ +

+ Не перегружайте пользователя запросами +

+ +

+ Если на пользователя обрушивается сразу много запросов разрешений, он может +решить, что все это слишком сложно, и просто закрыть приложение. Поэтому разрешения следует +запрашивать только тогда, когда это необходимо. +

+ +

+ Иногда приложению жизненно необходимы одно или несколько разрешений. +В таких случаях имеет смысл запросить все разрешения +сразу при запуске приложения. Например, если вы разрабатываете приложение для фотографирования, то ему +однозначно потребуется доступ к камере устройства. Когда пользователь в первый раз запускает приложение, +он не удивится, если приложение запросит у него разрешение на +использование камеры. Однако если в этом же приложении имеется функция обмена фотографиями с +контактами пользователя, возможно, не следует запрашивать соответствующее разрешение при +первом запуске приложения. Лучше дождаться, когда пользователю потребуется функция обмена контентом, +и уже тогда запросить разрешение. +

+ +

+ Если в вашем приложении имеются обучающие материалы, может оказаться целесообразным запросить необходимые разрешения +после того, как пользователь изучит материалы. +

+ +

+ Всегда поясняйте, для чего требуются те или иные разрешения +

+ +

+ В диалоговом окне запроса разрешений, которое система отображает при вызове вами метода +requestPermissions(), обозначается требуемое для приложения разрешение, +однако не указывается, для чего оно необходимо. В некоторых случаях это может озадачить пользователя. + Поэтому, прежде чем вызывать метод +requestPermissions(), стоит пояснить пользователю, для чего вашему приложению требуются разрешения. +

+ +

+ Например, приложению для фотографирования может потребоваться доступ к службам геолокации, чтобы фотографии можно было снабдить +геотегами. Не все пользователи знают, что +фотография может содержать данные о месте съемки, и им может показаться странным, что приложение для фотографирования запрашивает данные +о местоположении. В этом случае полезно +рассказать пользователю о такой возможности, прежде чем вызывать метод +requestPermissions(). +

+ +

+ Это можно сделать, в частности, внедрив такие запросы в обучающие материалы приложения. В обучающих +материалах могут содержаться описания каждой из функций приложения с пояснением, +какие разрешения необходимы для их использования. Например, в обучающий материал по работе с приложением для фотографирования +можно включить описание функции обмена контентом с контактами, после чего +пояснить, что для этого пользователю следует предоставить приложению доступ к его контактам. + После этого приложение может вызвать метод requestPermissions() для запроса +доступа. Конечно, не все пользователи обращаются к обучающим материалам, +поэтому вам по-прежнему следует проверять наличие разрешений и при необходимости запрашивать +их во время обычной работы приложения. +

diff --git a/docs/html-intl/intl/ru/preview/overview.jd b/docs/html-intl/intl/ru/preview/overview.jd new file mode 100644 index 0000000..6ed1d20 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/overview.jd @@ -0,0 +1,362 @@ +page.title=Обзор программы +page.metaDescription=Добро пожаловать в программу Android M Developer Preview, участники которой получают всё необходимое для тестирования и оптимизации своих приложений для следующей версии платформы Android. +page.image=images/cards/card-preview_16-9_2x.png +page.tags="preview", "developer", "android" + +@jd:body + +

+ Добро пожаловать в программу Android M Developer Preview, участники которой получают всё необходимоедля тестирования и оптимизации своих приложений для следующей версии платформы Android. + + Это бесплатная программа, и приступить к ее использованию можно прямо сейчас, загрузив +инструменты M Developer Preview. +

+ +
+
+
+
+
+ Системные образы эмулятора и оборудования +
+ +

+ Запускайте и тестируйте ваши приложения на устройствах Nexus 5, 6, 9 и Player (для Android TV), а также в эмуляторе. + +

+
+ +
+
+ Самый актуальный код платформы +
+ +

+ Во время знакомства с предварительной версией платформы мы будем предоставлять различные обновления, поэтому вы сможете протестировать самые актуальные изменения в платформе. + +

+
+ +
+
+ Получение обновлений по беспроводной связи +
+ +

+ После прошивки своего устройства для работы с предварительной версией платформы вы сможете получать обновления по беспроводной связи. + +

+
+
+ +
+ + +
+
+ Новые возможности и новые функции +
+ +

+ Начните уже заранее реализовывать в своих приложениях поддержку расширенной функциональности платформы, например, новую модель разрешений на выполнение и функции сбережения энергии. + +

+
+ +
+
+ Приоритетная обработка отчетов об ошибках от разработчиков +
+ +

+ В течение первых нескольких недель мы будем рассматривать отчеты об ошибках, поступающие от разработчиков, в приоритетном порядке, поэтому не теряйте времени и приступайте к тестированию и составлению отзывов как можно раньше. + +

+
+ +
+
+ Отзывы и поддержка +
+ +

+ Отправляйте нам отчеты об ошибках и предоставляйте свои отзывы с помощью нашей системы отслеживания проблем. + Обменивайтесь идеями и предложениями с другими разработчиками в сообществе разработчиков Android M. + +

+
+
+
+
+ + + + +

+ График и обновления +

+Preview program timeline +

+ Тестирование версии M Developer Preview запланировано на период с 28 мая до выпуска окончательной версии пакета SDK Android M, который +состоится незадолго до публикации новой платформы в открытом доступе в +третьем квартале 2015 г. +

+ +

+ На ключевых этапах разработки платформы мы предоставим обновления для тестовых устройств. + Ниже перечислены предварительные даты этих ключевых этапов. +

+ + + +

+ Завершающим этапом обновлений станет выход окончательной версии пакета SDK (в третьем квартале), +где будут представлены официальные API-интерфейсы для новой версии Android, а также +окончательные версии функций и поведений системы. +

+ +

+ Мы настоятельно рекомендуем вам в ходе тестирования и разработки приложений для Android M постоянно +обновлять вашу среду разработки по мере выхода обновлений для версии Preview. + Чтобы упростить этот процесс, мы будем отправлять на устройства, которые уже прошиты для работы с предварительной версией платформы, обновления по беспроводной сети. +Мы также будем предоставлять вам системные образы, которые можно +загрузить и использовать для прошивки устройства вручную. +

+

+ Примечание. Окончательные версии пакета SDK и системных образов не будут отправляться по беспроводной сети, +их придется вручную установить на +тестовые устройства. +

+ +

+ Мы будем сообщать о появлении обновлений для версии Preview в блоге разработчиков Android, а +также на этом сайте и в +сообществе разработчиков Android M. +

+ +

+ Что входит в состав Preview? +

+ +

+ M Developer Preview содержит всё, что вам необходимо для тестирования ваших существующих приложений на экранах различных размеров, +тестирования с использованием различных сетевых технологий, чипсетов ЦП и графических процессоров, + а также на различных архитектурах оборудования. +

+ +

+ Инструменты SDK +

+ +

+ С помощью менеджера SDK в Android Studio вы можете загрузить следующие компоненты: +

+ + + +

+ Системные образы оборудования +

+ +

+ На странице +Загрузки можно скачать следующие системные образы оборудования: +

+ + + +

+ Документация и примеры кода +

+ +

+ Здесь вы можете найти документацию, где представлены подробные сведения о версии Preview: +

+ + + +

+ Ресурсы поддержки +

+ +

+ При тестировании и разработке приложений для M +Developer Preview рекомендуем пользоваться следующими ресурсами поддержки: +

+ + + + +

+ Выбор целевого уровня, предварительные версии API-интерфейсов и публикация приложений +

+ +

+ Выпуск Android M Developer Preview предназначен исключительно для разработки и +не имеет стандартного уровня API. Если вы не хотите +проверять свое приложение на совместимость (хотя мы настоятельно рекомендуем делать это), +выберите целевой уровень M Developer Preview, задав для параметра targetSdkVersion +своего приложения значение “MNC”. +

+ +

+ В Android M Developer Preview представлены предварительные версии API-интерфейсов +—. Такие API-интерфейсы не будут официально опубликованы до выпуска окончательной версии пакета SDK, + намеченого на третий квартал 2015 г. Это означает, что в будущем можно +ожидать незначительных изменений в API-интерфейсах, особенно в +первые недели действия программы. Каждое обновление +Android M Developer Preview будет включать обзор изменений. +

+ +

+ Обратите внимание, что несмотря на возможные изменения в предварительных версиях API-интерфейсов, соответствующие расширения функциональности системы, +такие как разрешения на выполнение и функции сбережения энергии, работают стабильно и уже готовы для +тестирования. +

+ +

+ Что касается публикации приложений, то политика Google Play однозначно запрещает публикацию приложений, +разработанных для M Developer Preview. После выхода окончательной версии пакета SDK Android M +вы сможете выбрать официальный целевой уровень API Android M и приступить +к публикации ваших приложений в магазине Google Play. Тем временем, если вы хотите распространить приложение, предназначенное для +тестировщиков Android M, то используйте для этого электронную почту или разместите такие приложения на своем сайте +для прямой загрузки. +

+ +

+ Начало работы +

+ +

+ Чтобы приступить к тестированию своего приложения, выполните указанные ниже действия. +

+ +
    +
  1. Ознакомьтесь с обзором API-интерфейсов +и сведениями об изменениях в работе, чтобы получить +представление о новых возможностях платформы и о том, как это может повлиять на ваши приложения. В частности, узнайте подробнее о новой модели +разрешений на +выполнение, функциях сбережения энергии и автоматическом резервном копировании. +
  2. + +
  3. Настройте свою среду, руководствуясь инструкциями по +настройке пакета SDK Preview +и конфигурированию тестовых устройств. +
  4. + +
  5. Выполните +инструкции по прошивке, чтобы прошить устройства +Nexus 5, 6, 9 и Player с использованием последнего системного образа M Developer Preview. После прошивки вашего устройства для разработки +обновления Preview на него будут приходить по беспроводной сети. +
  6. + +
  7. Загрузите справочник по API-интерфейсам M Previewпримеры кода M Preview +, чтобы узнать больше о новых возможностях API-интерфейсов и о том, как использовать их в ваших +приложениях. +
  8. + +
  9. Присоединяйтесь к сообществу разработчиков Android +M, чтобы всегда быть в курсе последних новостей и общаться с другими +разработчиками, работающими с новой платформой. +
  10. +
+ +

+ Благодарим за участие в программе Android M Developer! +

-- cgit v1.1