Statyczne skróty w Android Nougat 7.1

Wraz z nowym Androidem Nougat w wersji 7.1 (API 25) Google zaoferowało kilka ciekawych możliwości. Jedną z nich jest opcja utworzenia skrótów do aplikacji. W poniższym wpisie pokażę, jak działają skróty statyczne.
Skróty w Androidzie – podstawowe informacje
Umożliwiają one automatyczne przeniesienie użytkownika w wybrane miejsce aplikacji. Pozwala to np. na szybszy dostęp do najczęściej używanej funkcjonalności aplikacji, oszczędzając użytkownikowi wykonywania niezbędnych kroków, aby dostać się do danej aktywności.
Skróty w Androidzie podzielić można na dwa rodzaje: statyczne i dynamiczne. Różnią się one całkowicie pod kątem tworzenia. Statyczne są tworzone poprzez XML, w przeciwieństwie do dynamicznych, które mogą powstać w dowolnym miejscu w kodzie aplikacji. W dzisiejszym wpisie skupię się na skrótach statycznych.
Tworzenie skrótów statycznych
Aby dodać do aplikacji skróty statyczne, jak już wspomniałam, należy utworzyć odpowiedni XML. Plik ten należy stworzyć pod ścieżką /res/xml/shortcuts.xml. W nim definiowane są wszystkie skróty statyczne. Poniżej widać dwa przykładowe skróty.
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="enableShortcut"
android:enabled="true"
android:icon="@android:drawable/star_on"
android:shortcutShortLabel="@string/short_shortcut_label"
android:shortcutLongLabel="@string/long_shortcut_label"
android:shortcutDisabledMessage="@string/shortcut_disabled">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.example.dominika.shortcuts"
android:targetClass="com.example.dominika.shortcuts.MainActivity" />
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.dominika.shortcuts"
android:targetClass="com.example.dominika.shortcuts.ShortcutActivity" />
</shortcut>
<shortcut
android:shortcutId="disableShortcut"
android:enabled="false"
android:icon="@android:drawable/star_off"
android:shortcutShortLabel="@string/disable_shortcut_label"
android:shortcutDisabledMessage="@string/shortcut_disabled">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.dominika.shortcuts"
android:targetClass="com.example.dominika.shortcuts.ShortcutActivity" />
</shortcut>
</shortcuts>
Należy tutaj zwrócić uwagę na kilka podstawowych parametrów:
- flaga enabled – definiuje czy skrót jest dostępny,
- icon – definiuje ikonę widoczną po lewej stronie od nazwy, w liście skrótów aplikacji lub po prostu ikonę główną, po wyodrębnieniu naszego skrótu na ekranie,
- shortcutShortLabel – obowiązkowa, krótka nazwa naszego skrótu,
- shortcutLongLabel – pole opcjonalne, które będzie widoczne tylko gdy nazwa zmieści się na ekranie,
- shortcutDisabledMessage – wiadomość, która pokaże się jeśli użytkownik spróbuje uruchomić niedostępny skrót,
- intent – kluczowe elementy, w których określane jest do czego prowadzi skrót.
Następnie należy uwzględnić stworzony plik w manifeście. Tak więc po otwarciu AndroidManifest.xml, jeszcze w głównej aktywności, trzeba dodać poniższy fragment kodu:
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts"/>
W powyższym przykładzie, stworzone zostały dwa skróty, które prowadzą do utworzonej na potrzeby przykładu ShortcutActivity. Drugi z nich ustawiony jako niedostępny, prowadzi bezpośrednio do nowej aktywności. Pierwszy z kolei, ma podane 2 intenty, które spowodują, że utworzony zostanie back stack aplikacji. Odzwierciedla to zwykłe uruchomienie dwóch aktywności w zdefiniowanej kolejności (pierw MainActivity, następnie ShortcutActivity).
Poniżej przedstawiony jest uzyskany rezultat:
Zwróćmy uwagę, że jeśli skrót jest niedostępny, nie widnieje na liście skrótów. Jednak każdy skrót można wydzielić na ekranie, wtedy (przy niedostępnym skrócie) ikona Androida zostaje wyszarzana, a po kliknięciu użytkownik zobaczy TOAST ze zdefiniowaną wiadomością.
Android Nougat dostarczył nam kilka nowinek. Skróty do aplikacji to na pewno jedna z bardziej interesujących propozycji. Jak widać dodanie statycznych skrótów nie jest niczym skomplikowanym. Zachęcam Was do wypróbowania stworzenia własnych skrótów.