16
Android M: Developer preview Вадим Щенев Rambler&Co Опыт личного знакомства

Android M: опыт личного знакомства

Embed Size (px)

Citation preview

Page 1: Android M: опыт личного знакомства

Android M: Developer preview

Вадим Щенев Rambler&Co

Опыт личного знакомства

Page 2: Android M: опыт личного знакомства

๏ Новая модель предоставления разрешений

๏ Автоматическое резервное копирование

๏ App Links

๏ Знакомство с новой технологией๏ Практическое применение полученных навыков

Android M: Developer Preview

Цели и задачи

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Page 3: Android M: опыт личного знакомства

๏ Ограниченные разрешенияPROTECTION_NORMAL — при установкеPROTECTION_SIGNATURE — по запросу

๏ Запрос разрешений в режиме Runtime

๏ Отзыв разрешений

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

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

Page 4: Android M: опыт личного знакомства

android.permission-group.CALENDARandroid.permission-group.CAMERAandroid.permission-group.CONTACTSandroid.permission-group.LOCATIONandroid.permission-group.MICROPHONEandroid.permission-group.PHONEandroid.permission-group.SENSORSandroid.permission-group.SMS

Объединение в группы

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Page 5: Android M: опыт личного знакомства

๏ Ранняя OS/приложение — старая модель предоставления

๏ М+: все разрешения по новой модели

Совместимость

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Page 6: Android M: опыт личного знакомства

if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSION_REQUEST_CONTACTS); }

Запрос на получение разрешения

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case PERMISSION_REQUEST_CONTACTS: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { } }

Результат

Page 7: Android M: опыт личного знакомства

๏ Данные приложения сохраняются на Google Drive каждые 24 часа

๏ Каждое приложение может хранить до 25 Мб данных๏ Шифрование данных๏ Бесплатное хранилище вне личного пространства๏ Пользователь сам принимает решение об использовании данного функционала приложением

๏ Разработчик определяет какие данные должны подлежать резервному копированию

Автоматическое резервное копирование

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Page 8: Android M: опыт личного знакомства

๏ Файлы в каталогах, на которые ссылаются методы getCacheDir() и getCodeCacheDir()

๏ Файлы во внешнем хранилище, кроме файлов, находящихся в каталогах, на которые ссылается метод getExternalFilesDir()

๏ файлы в каталоге, на который ссылается метод getNoBackupFilesDir()

Что не входит в схему по умолчанию

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Включение схемы

<application android:allowBackup="true" android:fullBackupContent="@xml/app_backup"

Page 9: Android M: опыт личного знакомства

File: getFilesDir()External: getExternalFilesDir()Root: app root folderDatabase: getDataBasePath()

Путь к данным

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Настройка параметров<?xml version="1.0" encoding="utf-8"?> <full-backup-content xmlns:android="http://schemas.android.com/apk/res/android">

<exclude domain="sharedpref" path="user_token"/>

<exclude domain="database" path="api_keys.db"/>

<exclude domain="file" path="news.zip"/>

<exclude domain="external" path="photos.zip"/>

<exclude domain="root" path="cinemas.zip"/>

</full-backup-content>

Page 10: Android M: опыт личного знакомства

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

App Links

Page 11: Android M: опыт личного знакомства

๏ Связь приложений с Web сайтом๏ Открытие html ссылки приложением в автоматическом режиме, без запроса у пользователя

App Links

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Page 12: Android M: опыт личного знакомства

[ { "relation":[ "delegate_permission/common.handle_all_urls" ], "target":{ "namespace":"android_app", "package_name":"com.app.test", "sha256_cert_fingerprints":[ "16:DF:17 .. D5" ] } } ]

Связь через JSONObject

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

https://cloudchat.com/.well-known/statements.json

Page 13: Android M: опыт личного знакомства

<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="www.cloudchat.com" /> <data android:scheme="https" android:host="www.cloudchat.com" /> </intent-filter>

Манифест приложения

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Page 14: Android M: опыт личного знакомства

Как это работает

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

Package Manager

Intent Filter Verifier

cache

http://cloudchat.com/

.well-known/statements.json

Device Web Server

Page 15: Android M: опыт личного знакомства

Ждем релиз

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co

๏ Повышение безопасности приложений๏ Удобство синхронизации данных и использования приложений

๏ Простота реализации нового Api๏ Ускорение процесса разработки программного продукта

๏ Гибкость использования заявляемого функционала

Page 16: Android M: опыт личного знакомства

Спасибо за внимание!

Android M: Developer Preview — опыт личного знакомства Вадим Щенев Rambler&Co