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ć.
// 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.
}
// 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.