Junior
Jakie rodzaje uprawnień (permissions) istnieją w Androidzie?
sobes.tech AI
Odpowiedź od AI
Na Androidzie istnieje kilka rodzajów uprawnień, które określają poziomy dostępu aplikacji do chronionych zasobów i danych użytkownika.
- Uprawnienia normalne: Uprawnienia o minimalnym ryzyku. Są one automatycznie przyznawane podczas instalacji aplikacji i nie wymagają wyraźnej zgody użytkownika podczas działania. Na przykład dostęp do internetu (
android.permission.INTERNET). - Uprawnienia niebezpieczne: Uprawnienia o wysokim ryzyku. Wymagają wyraźnej zgody użytkownika podczas działania aplikacji. Dostęp do tych zasobów może wpłynąć na prywatność lub funkcjonowanie urządzenia. Na przykład dostęp do kontaktów (
android.permission.READ_CONTACTS), kamery (android.permission.CAMERA). - Uprawnienia podpisu: Uprawnienia, które mogą być przyznane aplikacjom podpisanym tym samym certyfikatem, co aplikacja definiująca uprawnienie. Używane do kontroli dostępu między komponentami tego samego systemu lub zestawu aplikacji.
- Uprawnienia podpisu lub systemowe: Te uprawnienia mogą być przyznane zarówno aplikacjom podpisanym tym samym certyfikatem, jak i tym znajdującym się w sekcji systemowej.
Ponadto można wyróżnić:
- Uprawnienia podczas instalacji: Uprawnienia, które są żądane i przyznawane podczas instalacji aplikacji. Należą do nich
normalneipodpisaneuprawnienia. - Uprawnienia w czasie działania: Uprawnienia żądane podczas działania na urządzeniach z Androidem 6.0 (API poziom 23) i wyżej. Należą do nich
niebezpieczneuprawnienia. - Uprawnienia specjalne: Specjalna klasa uprawnień, które wymagają specjalnych kroków do ich przyznania. Na przykład nakładanie na inne okna (
SYSTEM_ALERT_WINDOW) lub zmiana ustawień systemowych (WRITE_SETTINGS). Nie należą ani donormalnych, ani doniebezpiecznych.
W manifeście aplikacji żąda się wszystkich niezbędnych uprawnień:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CAMERA" />
<application
...
>
...
</application>
</manifest>
Żądanie niebezpiecznych uprawnień odbywa się w czasie działania:
// Przykład żądania uprawnienia do odczytu kontaktów
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.READ_CONTACTS),
MY_PERMISSIONS_REQUEST_READ_CONTACTS)
} else {
// Uprawnienie już przyznane, można wykonać operację
}