SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Android Marshmallow
Давайте познакомимся…
Mobile Dimension LLC
Старший Android Разработчик
Учебный центр «Jolly Droid»
Основатель и преподаватель
Igor.tseglevskiy@gmail.com
Игорь Цеглевский
http://mobiledimension.ru
http://jollydroid.ru
Marshmallow
Permissions
Permissions
• targetSdkVersion=22
– Permissions (права доступа) работают как прежде:
разрешено всё, что описано в манифесте
– Пользователь может в настройках отозвать любое
из прав!
• Андроид предупреждает, что это может вызвать падение
приложения, но не запрещает
• При изменении списка прав приложение будет
остановлено
– Если пользователь отозвал права, то
соответствующие API вернут 0 или null
Permissions
• targetSdkVersion=23
– «Нормальные» права доступа даются
автоматически
– «Опасные» права необходимо запросить явно,
для каждой группы
– «Опасные» права пользователь может отозвать
в настройках приложения. Приложение должно
всегда (каждый раз при обращении к
соответствующим API) проверять наличие прав
Permissions. Steps
ActivityCompat
.shouldShowRequestPermissionRationale()
ContextCompat
.checkSelfPermission()
Нет
ActivityCompat
.requestPermissions()
Notification-
Объяснение
Работаем
Да
Нет
Да
Permissions. Steps
Permissions. Steps
grantResults[0] ==
PackageManager.PERMISSION_GRANTED
Учитываем в работе или
информируем пользователя
onRequestPermissionsResult()
Работаем
Нет
Да
Permissions. Interface
Permissions. Ресурсы
https://gist.github.com/tseglevskiy/cc715f36e10ad81c83b6
http://developer.android.com/intl/ru/training/permissions/requesting.html
https://newcircle.com/s/post/1737/2015/05/31/the-new-android-m-permissions-model
http://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-
permission-developer-edition/en
http://habrahabr.ru/post/269491/
ID
ID наши
• WiFi MAC, Bluetooth MAC:
– всегда 02:00:00:00:00:00
• Phone number (telephonyManager.getLine1Number()):
требуется:
– READ_PHONE_STATE «Осуществление телефонных
звонков и управление ими»
– или READ_SMS «Отправлять и просматривать SMS-
сообщения»
• IMEI (telephonyManager.getDeviceId()):
– требуется READ_PHONE_STATE
• Попробуйте Settings.Secure.ANDROID_ID
ID чужие
• Доступ к данным, содержащим ID
окружающих устройств требует
ACCESS_COARSE_LOCATION
– WifiManager.getScanResults()
– BluetoothDevice.ACTION_FOUND
– BluetoothLeScanner.startScan()
• Note: When a device running Android initiates a
background Wi-Fi or Bluetooth scan, the
operation is visible to external devices as
originating from a randomized MAC address.
App Standby
and Doze Mode
Doze Mode & App Standby
• Doze Mode – режим, в который устройство
переходит, если находится некоторое время
с залоченным экраном, без движения и
работающее от батарей
• App Standby – лишение ресурсов
приложений, которые давно не
использовались
Doze Mode. Ограничения
• AlarmManager – только setAndAllowWhileIdle(),
setExactAndAllowWhileIdle() и setAlarmClock().
Остальные задерживаются до maintenance window.
• JobScheduler – все текущие задачи завершаются, все
отложенные ждут maintenance window
• SyncManager – все синки завершаются
• PowerManager – работают только Wake Lock-и
приложений из белого списка, остальные
игнорируются
• NetworkPolicyManager – для него doze mode тоже
самое, что и idle mode. Т.е. сеть есть только для
приложений из белого списка
Doze Mode. Что работает
• AlarmManager
– set[Exact]AndAllowWhileIdle() не чаще раз в 15
минут
– setAlarmClock()
• GCM messages with high priority
• Сеть и Wake Locks, если приложение в белом
списке
• Все приложения получают возможность
выполнить работу в течение Maintenance
window
Doze Mode
Maintenance window наступит
через:
• 1 час
• 2 часа
• 4 часа
• 6 часов (и далее каждые 6 часов)
Doze Mode. Отладка
• Запустить приложение
• Залочить экран
• adb shell dumpsys battery unplug
• adb shell dumpsys deviceidle step
DeviceIdleController.java
Doze Mode. Работа
Doze Mode. Работа
White list
• Приложению из white list доступна сеть и
Wake lock-и
• Пользователь может включить сам:
– Настройки –> Батарея -> Экономия заряда
батареи -> Все приложения -> App -> Не
экономить
– Settings -> Battery -> Battery Optimization
• Можно запросить программно
White list
White list
White list. Отладка
$ adb shell dumpsys deviceidle
Whitelist user apps:
ru.jollydroid.dozedemo1
$ adb shell dumpsys deviceidle 
whitelist +ru.jollydroid.dozedemo1
$ adb shell dumpsys deviceidle 
whitelist -ru.jollydroid.dozedemo1
App Standby. Условия
Приложение может быть переведено в
standby только если одновременно:
• Устройство работает от батареи
• Неверно следующее:
– Пользователь явно запустил приложение.
– Приложение имеет foreground процесс
– Есть видимое уведомление (Notification),
созданное приложением.
• Приложение не в белом списке
App Standby. Отладка
$ adb shell dumpsys battery unplug
$ adb shell am set-inactive <packageName> true
$ adb shell am set-inactive <packageName> false
$ adb shell am get-inactive <packageName>
Doze Mode. Ресурсы
https://gist.github.com/tseglevskiy/dc43de20efd261cfe895
https://developer.android.com/intl/ru/training/monitoring-device-
state/doze-standby.html
https://developer.android.com/intl/ru/reference/android/os/PowerManager.html#AC
TION_DEVICE_IDLE_MODE_CHANGED
https://android.googlesource.com/platform/frameworks/base/+/master/services/cor
e/java/com/android/server/DeviceIdleController.java
https://newcircle.com/s/post/1739/2015/06/12/diving-into-android-m-doze
http://habrahabr.ru/post/269491/
Notifications
Notifications
• Notification.setLatestEventInfo() удален.
– Для обновления повторно используйте
Notification.Builder и NotificationManager.notify() c
тем же id.
• adb shell dumpsys notification --noredact
• У NotificationManager появился метод
StatusBarNotification[] getActiveNotifications()
Notifications. Ресурсы
• http://developer.android.com/intl/ru/referenc
e/android/app/NotificationManager.html#get
ActiveNotifications()
Text Selection
Text Selection
Text Selection
Text Selection. Callback
Text Selection. Callback
Text Selection
Text Selection. Грабли
Где наши пункты??
Text Selection. Грабли
• Не всё помещается, появляется невидимый скролл
• Порядок задается с помощью android:orderInCategory,
родные нумеруются 1..5
• Менюшка fullscreen input mode не дополняется таким
способом (можно выключить с помощью
android:imeOptions="flagNoExtractUi")
Text Selection. Ресурсы
• https://gist.github.com/tseglevskiy/87227454f
9b57ea69399
• http://developer.android.com/intl/ru/about/v
ersions/marshmallow/android-6.0-
changes.html#behavior-text-selection
App Links
App Links
App Links
• https://<your host>/.well-known/assetlinks.json
– Обязательно HTTPS!!
App Links. Отладка
• keytool -list -v -keystore debug.keystore 
| grep SHA256
• adb shell am start -a android.intent.action.VIEW 
-c android.intent.category.BROWSABLE 
-d "http://<domain1>:<port>"
• adb shell dumpsys package domain-preferred-apps
App Links. Ресурсы
https://gist.github.com/tseglevskiy/5f6d7d7e81a291000782
http://developer.android.com/intl/ru/training/app-links/index.html
http://blog.hokolinks.com/android-m-app-links-implementation-drawbacks/
Auto Backup
Auto Backup
• Auto backup происходит, когда:
– Устройство не используется
– Находится на зарядке
– Подключено к WiFi
– С момента последнего бэкапа прошло более 24
часов
Auto Backup
• Не попадут файлы из каталогов
– getCacheDir()
– getCodeCacheDir()
– getNoBackupFilesDir()
• С внешнего стораджа попадут только файлы
из каталога getExternalFilesDir()
• Общий объем не более 25МБ на приложение
– При превышении объема бэкап останавливается,
«в облаке» остается последнее сохраненное
состояние
Auto Backup. Config
Auto Backup. Config
• domain – указание каталога, в котором искать
файл
– file – /data/data/<package>/files
– database – /data/data/<package>/databases/
– sharedpref – /data/data/<package>/shared_prefs/
– external –
/storage/emulated/0/Android/data/<package>/files/
– root – ссылка на /data/data/<package>/ или аналог
(названия каталогов – условные, они могут меняться
в зависимости от конфигурации)
Auto Backup. Config
• path – относительное имя файла
– С расширением! Т.е. если
getSharedPreferences("pref1", MODE_PRIVATE),
то
<exclude domain="sharedpref"
path="pref1.xml"/>
Auto Backup. Event
Auto Backup. Отладка
• Принудительный запуск бэкапа
adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
adb shell bmgr run
adb shell bmgr fullbackup <package>
• Восстановление из бэкапа
adb shell bmgr restore <package>
• Очистка бэкапа в облаке
adb shell bmgr wipe com.google.android.gms <package>
Auto Backup. Грабли
PFTBT : Error -1002 backing up ru.jollydroid.autobackupdemo1
PFTBT : Transport suggested backoff=0
PFTBT : Transport rejected backup of ru.jollydroid.autobackupdemo1, skipping
PFTBT : Full backup completed.
Если бэкап не работает и в логе такое сообщение, возможно:
- Ошибка в конфиге, в результате не найдено ни одного файла для бэкапа
- Слишком много данных (больше 25М)
Auto Backup. Ресурсы
https://gist.github.com/tseglevskiy/e71cd081c2d8ef07c0a3
http://developer.android.com/intl/ru/training/backup/autosyncapi.html
https://developer.android.com/intl/ru/reference/android/app/backup/BackupAgent.ht
ml#onRestoreFinished()
Вопросы?
Спасибо за внимание!
igor.tseglevskiy@gmail.com
http://jollydroid.ruhttp://mobiledimension.ru

Weitere ähnliche Inhalte

Andere mochten auch

Have a look Google next operating system update : Android Marshmallow
Have a look Google next operating system update : Android MarshmallowHave a look Google next operating system update : Android Marshmallow
Have a look Google next operating system update : Android MarshmallowMike Taylor
 
Instalasi Android 6.0 "Marshmallow"
Instalasi Android 6.0 "Marshmallow"Instalasi Android 6.0 "Marshmallow"
Instalasi Android 6.0 "Marshmallow"anafatwa21
 
Android Marshmallow demos
Android Marshmallow demosAndroid Marshmallow demos
Android Marshmallow demosYossi Elkrief
 
Tara Shears - Latest News from the LHC
Tara Shears - Latest News from the LHCTara Shears - Latest News from the LHC
Tara Shears - Latest News from the LHCThe Royal Institution
 

Andere mochten auch (9)

Have a look Google next operating system update : Android Marshmallow
Have a look Google next operating system update : Android MarshmallowHave a look Google next operating system update : Android Marshmallow
Have a look Google next operating system update : Android Marshmallow
 
Android marshmallow 6.0
Android marshmallow 6.0Android marshmallow 6.0
Android marshmallow 6.0
 
Instalasi Android 6.0 "Marshmallow"
Instalasi Android 6.0 "Marshmallow"Instalasi Android 6.0 "Marshmallow"
Instalasi Android 6.0 "Marshmallow"
 
Android Marshmallow
Android MarshmallowAndroid Marshmallow
Android Marshmallow
 
Android Marshmallow demos
Android Marshmallow demosAndroid Marshmallow demos
Android Marshmallow demos
 
Tara Shears - Latest News from the LHC
Tara Shears - Latest News from the LHCTara Shears - Latest News from the LHC
Tara Shears - Latest News from the LHC
 
Ppt on android
Ppt on androidPpt on android
Ppt on android
 
Android 6.0 marshmallow
Android 6.0 marshmallowAndroid 6.0 marshmallow
Android 6.0 marshmallow
 
Android ppt
Android ppt Android ppt
Android ppt
 

Ähnlich wie Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow

Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...
Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...
Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...Mail.ru Group
 
Android M: опыт личного знакомства
Android M: опыт личного знакомстваAndroid M: опыт личного знакомства
Android M: опыт личного знакомстваRambler Android
 
Google I/O 2016 для разработчиков
Google I/O 2016 для разработчиковGoogle I/O 2016 для разработчиков
Google I/O 2016 для разработчиковWOX APP
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...Positive Hack Days
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийPositive Hack Days
 
Appium для народа
Appium для народаAppium для народа
Appium для народаSQALab
 
JEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советыJEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советыdmalykhanov
 
[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)Evgeny Kaziak
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleGeeksLab Odessa
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Эльвина Сакаева
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashbackhexminer
 
Android - 06 - Gradle
Android - 06 - GradleAndroid - 06 - Gradle
Android - 06 - GradleNoveo
 
Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Kirill Rozov
 
Безопасность без антивирусов 3
Безопасность без антивирусов 3Безопасность без антивирусов 3
Безопасность без антивирусов 3Positive Hack Days
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 

Ähnlich wie Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow (20)

Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...
Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...
Droidcon Moscow 2015. К релизу Android Marshmallow - готов! Денис Неклюдов - ...
 
Android M: опыт личного знакомства
Android M: опыт личного знакомстваAndroid M: опыт личного знакомства
Android M: опыт личного знакомства
 
Google I/O 2016 для разработчиков
Google I/O 2016 для разработчиковGoogle I/O 2016 для разработчиков
Google I/O 2016 для разработчиков
 
ChromeDriver Jailbreak
ChromeDriver JailbreakChromeDriver Jailbreak
ChromeDriver Jailbreak
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
 
Appium для народа
Appium для народаAppium для народа
Appium для народа
 
JEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советыJEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советы
 
[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashback
 
Android - 06 - Gradle
Android - 06 - GradleAndroid - 06 - Gradle
Android - 06 - Gradle
 
Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)
 
Безопасность без антивирусов 3
Безопасность без антивирусов 3Безопасность без антивирусов 3
Безопасность без антивирусов 3
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 

Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow