Jak wspomnieliśmy w przepływie pracy korzystania z usługi uprawnienia, jeśli aplikacja prosi o dostęp uprawnień, musisz zadeklarować je w pliku manifestu aplikacji. Te deklaracje ułatwiają sklepom z aplikacjami i użytkownikom zrozumienie zestawu uprawnień których może żądać aplikacja.
Proces prośby o przyznanie uprawnień zależy od typu uprawnienie:
- Jeśli uprawnienie jest czasem instalacji uprawnienia, takie jak uprawnienia lub uprawnienia do podpisu, są one przyznawane automatycznie podczas instalacji.
- Jeśli uprawnienie jest środowiskiem wykonawczym uprawnienia lub specjalne , a jeśli aplikacja jest zainstalowany na urządzeniu z Androidem 6.0 (poziom interfejsu API 23) lub nowszym, poproś o uprawnienia czasu działania lub specjalne uprawnienia uprawnienia.
Dodaj deklarację do pliku manifestu aplikacji
Aby zadeklarować uprawnienia, o które może prosić aplikacja, dodaj odpowiednie
<uses-permission>
w
plik manifestu aplikacji. Na przykład: aplikacja, która potrzebuje dostępu do aparatu
zawiera ten wiersz w języku AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.CAMERA"/> <application ...> ... </application> </manifest>
Zadeklarowanie sprzętu jako opcjonalnego
Niektóre uprawnienia, na przykład
CAMERA
, pozwól aplikacji
To sprzęt, który jest dostępny tylko w niektórych urządzeniach z Androidem. Jeśli Twoja aplikacja
deklaruje jedno z tych powiązanych ze sprzętem
uprawnienia,
Zastanów się, czy aplikacja nadal może działać na urządzeniu, które jej nie ma.
sprzęt. W większości przypadków sprzęt jest opcjonalny, więc lepiej zadeklarować parametr
sprzętowy jako opcjonalny, ustawiając android:required
na false
w
<uses-feature>
,
w tym fragmencie kodu z pliku AndroidManifest.xml
:
<manifest ...> <application> ... </application> <uses-feature android:name="android.hardware.camera" android:required="false" /> <manifest>
Określanie dostępności sprzętu
Jeśli zadeklarujesz sprzęt jako opcjonalny, aplikacja może działać na
które nie ma takiego sprzętu. Aby sprawdzić, czy urządzenie ma określony
skorzystaj z
hasSystemFeature()
zgodnie z poniższym fragmentem kodu. Jeśli sprzęt nie jest dostępny,
płynnie ją wyłączyć.
Kotlin
// Check whether your app is running on a device that has a front-facing camera. if (applicationContext.packageManager.hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Java
// Check whether your app is running on a device that has a front-facing camera. if (getApplicationContext().getPackageManager().hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Deklarowanie uprawnień według poziomu interfejsu API
Aby zadeklarować uprawnienie tylko na urządzeniach, które obsługują uprawnienia w czasie działania aplikacji –
urządzenia z Androidem 6.0 (poziom interfejsu API 23) lub nowszym
<uses-permission-sdk-23>
zamiast
Element <uses-permission>
.
Jeśli używasz jednego z tych elementów, możesz ustawić atrybut maxSdkVersion
w celu wskazania, że urządzenia z Androidem w wersji nowszej niż
określona wartość nie wymaga specjalnych uprawnień. Dzięki temu możesz:
wyeliminowanie niepotrzebnych uprawnień przy jednoczesnym zapewnieniu zgodności
starszych urządzeń.
Na przykład aplikacja może wyświetlać treści multimedialne, takie jak zdjęcia
utworzone przez użytkownika podczas korzystania z Twojej aplikacji. W takim przypadku
nie musisz używać
READ_EXTERNAL_STORAGE
na urządzeniach, które
mieć Androida w wersji 10 (poziom interfejsu API 29) lub nowszego, o ile Twoja aplikacja jest kierowana na
Androida w wersji 10 lub nowszej. Jednak dla zapewnienia zgodności ze starszymi urządzeniami
możesz zadeklarować uprawnienie READ_EXTERNAL_STORAGE
i ustawić
android:maxSdkVersion
do 28.