вівторок, 17 липня 2018 р.

Дозволи доступу в Android 6 та вище (Android permissions)

В андроїді 6 було переглянуто концепцію надання доступу. Раніше розробник у файлі manifest.xml вказував дозволи на доступ до компонентів мобільного таким чином:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.CAMERA"/>

Цього було досить в попередніх версіях андроїда. Користувач при встановленні програми підтверджував ці доступи і програма отримувала доступ до необхідних засобів. Такий підхід призвів до проблеми пов’язаної із тим, що програми-шпигуни могли без відома користувачів отримувати від них інформацію і передавати стороннім особам. Тож в андроїд 6 та вище необхідно додатково писати код, який би запитував користувача про надання доступу. Зокрема необхідно запитувати дозвіл на доступ до камери, списку контактів, місця розташування тощо. При чому дозволи діляться на групи, якщо ви запитали доступ на читання зовнішньої сховища даних, то вам автоматично дається дозвіл на запис до цього сховища. Крім того самі дозволи діляться на нормальні та небезпечні. Нормальні не несуть небезпеки конфіденційності користувачу.

Для отримання дозволу, які класифіковані як небезпечні, необхідно зробити декілька кроків:
1) Перевірити чи раніше не був даний такий доступ
2) Якщо доступ не надано, то запитати користувача
3) Перевизначити метод onRequestPermissionsResult(), який би перевіряв чи користувач прийняв запит чи відхилив і в залежності від того здійснити подальші дії.

Такі дії необхідно виконувати, якщо targetSdkVersion 23 або вище. Якщо цільова версія нижче 23, то ці програми працюють як раніше на новіших версіях андроїда. Щоправда, гугл плей зараз настійливо рекомендує націлювати програми на останні версії андроїда.

При написанні програми в маніфесті, як і раніше необхідно вказувати відповідні рядки з uses-permission.

Допустимо необхідно написати програму для доступу до контактів та камери користувача. Для цього зробимо просту активність із двома кнопками "Контакти" та "Камера":


субота, 3 лютого 2018 р.

ListView з власним адаптером (Android)

Стандартні адаптери для ListView реалізовані для простих стандартних списків, які складаються або з простих текстових полів, або з текстових полів та якогось перемикача (прапорця або радіокнопки). Якщо необхідно реалізувати, щось інше, то необхідно реалізувати власний адаптер, який би відображав пункти списку в потрібному вигляді.

Завдання
Реалізуймо список, який би відображав телефонну книгу і кожен пункт включав би фото, ім’я та номер телефону. Після натиснення на пункті списку виводитиметься відповідне повідомлення.

Підготовка
Спочатку створюємо проект з пустою активністю ListActivity.java 
У папочку res/drawable необхідно закинути зображення, які будуть використовуватися в якості фото.

Для того, щоб програма запрацювала нам знадобиться чотири файли:
ListActivity.java – головна активність програми
Person.java – клас, що містить інформацію про особу (фото, ім’я та телефон)
activity_list.xml – макет активності ListActivity.java (містить віджети TextView та ListView)
item_list.xml – макет пункту списку, в якому вказується як відображатиметься фото і текст, відображенням його на екран займатиметься адаптер, що буде внутрішнім класом у ListActivity.java.

субота, 27 січня 2018 р.

Простий ListView (Android)

Віджет ListView – часто застосовуваний елемент графічного інтерфейсу користувача в Android. Він дозволяє виводити ряд елементів на екран у вигляді прокручуваного списку. При натисненні на елементі списку, може виконуватися певна дія, наприклад, відкриття нової активності з додатковими деталями списку.

Задача
Вивисте список пристроїв. При натисненні певного пункту виводитиметься відповідне повідомлення.
1. Створюємо нову активність ListActivity

неділя, 19 лютого 2017 р.

Activity (Android)

В Android основні елементи програми - активності (Activity) та макети (Layout).

Якщо необхідно створити вікно з кнопками, то створюється макет вікна з розташуванням кнопок та підклас класу Activity, який відобразить інтерфейс та реагуватиме на дії користувачів (опрацьовуватиме події). Програма може складатися з багатьох активностей та макетів.

Макет – це файл опису графічного інтерфейсу користувача в форматі XML.
 
Рекомендують називати файли активності використовуючи слово Activity, наприклад, HelloActivity, StartActivity і т.п. Макети називаються з малої букви, із словами у зворотньому порядку, з використанням символу підкреслення між словами. При використанні Android Studio макети автоматично найменуються, наприклад, activity_hello, activity_start.

Завдання:
Розробити програму, яка б складалася з однієї активності та містила кнопку(Button) і текстове поле(TextView). При натисненні кнопки напис текстового поля повинен змінитися на інший.

Рис. 1 - Результати виконання програми

Створення заготовки

Щоб створити заготовку програми достатньо скористатися готовими шаблонами в Android Studio. Вибираємо File.>new->New Project і вибираємо серед запропонованих шаблонів Blank Activity. Називаємо наш проект FirstApp, і при бажанні вводимо назву пакету і тиснемо фініш. В результаті буде створений проект, який просто буде виводити на екран «Hello, World!!!». Нас в даному проекті цікавить три файли.

вівторок, 27 вересня 2016 р.

Android Studio: Error:The number of method references in a .dex file cannot exceed 64K.

Error:The number of method references in a .dex file cannot exceed 64K.

Доволі часто помилка, якщо судити з обговорень.

Способів вирішення три:

1. Почистити код, позбутися лишніх інструкцій та відповідно лишніх імпортів

2. Прописати у скрипті gradle

// Enabling multidex support.
multiDexEnabled true

понеділок, 2 травня 2016 р.

Геокоди України

Наша пам’ять асоціативна і найкраще запам’ятовує людина те до чого вона може прив’язати певну асоціацію.  От цікаво, хто у нас займається введенням кодів? Свого часу мене дивувало чому у нас ввели номерні автомобільні знаки, які важко запам’ятати, адже взагалі у світі прийнято використовувати для таких речей мнемонічні позначення, які легко запам’ятовуються.  І от зараз дивлюсь на позначення наших областей згідно ISO-3166-2:UA. Ну Україна тут UA та UKR тут усе добре, а от позначення українських регіонів  UA-30 -Київ, UA-05 - Вінницька область, UA-74 - Чернігівська область і т.д. Які розумники це придумували? І явно тут же хтось з українців подавав ідеї для такого кодування. У всіх наших сусідів пішли нормально, так RO-B - Бухарест (Румунія), PL-LU - Люблінське воєводство (Польща), RU-MOW - Москва (Росія) і т.д. І лише в нас усе закодовано цифрами. Про людей, які згодом повинні працювати з цими кодами ніхто і не думав.

неділя, 3 січня 2016 р.

Git (пам’ятка)

Git — розподілена система керування версіями.

Базові команди 

 Створення репозиторія на локальному комп’ютері:
$git init
Подивитись поточний стан
$git status
Додати (підготувати) в репозиторій усі файли
$git add .
Додати окремий файл
$git add index.html
Остаточно передати в репозиторій підготовлені файли із коментарем до того що додається:
$git commit –m "Коментар"
Переглянути різницю між тим, що в репозиторію і файлами на диску:
$git diff
Забрати з git лишнє
$git rm –- cached LICENSE.PHP
відкат
$git checkout --license.php

Робота з гілками

створення нової гілки
$git branch new_style
переключитися на нову гілку
$git checkout new_style
подивитись гілки і яка поточна
$git branch
Злиття гілок
$git merge new_style

Робота з віддаленим сервером (GitHub)